p_table <- function(tab_data, ...) {
tab_data_2 <- deparse(substitute(tab_data))
table_p <- do.call(CreateTableOne,
list(data = as.name(tab_data_2), includeNA = TRUE, ...))
table_p_out <- print(table_p,
showAllLevels = TRUE,
printToggle = FALSE)
kable(table_p_out,
align = "c")
}
uni_var <- function(test_var, data_imp) {
cat("_________________________________________________")
cat("\n")
cat(" \n##", test_var)
cat("\n")
cat("_________________________________________________")
cat("\n")
f <- as.formula(paste("Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)",
as.name(test_var),
sep = " ~ " ))
data_imp_2 <- deparse(substitute(data_imp))
km_fit <- do.call("survfit", list(formula = f, data = as.name(data_imp_2)))
print(km_fit)
cat("\n")
print(summary(km_fit, times = c(12, 24, 36, 48, 60, 120)))
cat("\n")
cat("\n")
cat("\n")
cat(" \n## Univariable Cox Proportional Hazard Model for: ", test_var)
cat("\n")
cat("\n")
n_levels <- nlevels(data_imp[[test_var]])
if(n_levels == 1){
print("Only one level, no Cox model performed")
cat("\n")
} else {
cox_fit <- do.call("coxph", list(formula = f, data = as.name(data_imp_2)))
print(summary(cox_fit))
cat("\n")
do.call("ggforest",
list(model = cox_fit, data = as.name(data_imp_2)))
}
cat("\n")
cat("\n")
cat("\n")
cat(" \n## Unadjusted Kaplan Meier Overall Survival Curve for: ", test_var)
p <- do.call("ggsurvplot",
list(fit = km_fit, data = as.name(data_imp_2),
palette = "jco", censor = FALSE, legend = "right",
linetype = "strata", xlab = "Time (Months)"))
print(p)
}
col.width <- c(37, 10, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 1, 4, 1, 1,
1, 3, 2, 2, 8, 2, 5, 5, 5, 4, 5, 5, 5,4, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 8,
8, 8, 2, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 2, 2, 5, 2, 5, 3, 1, 3, 1, 8, 8, 2, 8,
2, 8, 2, 2, 1, 8, 1, 1, 1, 1, 1, 8, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1)
col.names.abr <- c("PUF_CASE_ID", "PUF_FACILITY_ID", "FACILITY_TYPE_CD", "FACILITY_LOCATION_CD",
"AGE", "SEX", "RACE", "SPANISH_HISPANIC_ORIGIN", "INSURANCE_STATUS",
"MED_INC_QUAR_00", "NO_HSD_QUAR_00", "UR_CD_03", "MED_INC_QUAR_12", "NO_HSD_QUAR_12",
"UR_CD_13", "CROWFLY", "CDCC_TOTAL_BEST", "SEQUENCE_NUMBER", "CLASS_OF_CASE",
"YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "LATERALITY", "HISTOLOGY", "BEHAVIOR", "GRADE",
"DIAGNOSTIC_CONFIRMATION", "TUMOR_SIZE", "REGIONAL_NODES_POSITIVE",
"REGIONAL_NODES_EXAMINED", "DX_STAGING_PROC_DAYS", "RX_SUMM_DXSTG_PROC", "TNM_CLIN_T",
"TNM_CLIN_N", "TNM_CLIN_M", "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "TNM_EDITION_NUMBER", "ANALYTIC_STAGE_GROUP", "CS_METS_AT_DX",
"CS_METS_EVAL", "CS_EXTENSION", "CS_TUMOR_SIZEEXT_EVAL", "CS_METS_DX_BONE", "CS_METS_DX_BRAIN",
"CS_METS_DX_LIVER", "CS_METS_DX_LUNG", "LYMPH_VASCULAR_INVASION", "CS_SITESPECIFIC_FACTOR_1",
"CS_SITESPECIFIC_FACTOR_2", "CS_SITESPECIFIC_FACTOR_3", "CS_SITESPECIFIC_FACTOR_4",
"CS_SITESPECIFIC_FACTOR_5", "CS_SITESPECIFIC_FACTOR_6", "CS_SITESPECIFIC_FACTOR_7",
"CS_SITESPECIFIC_FACTOR_8", "CS_SITESPECIFIC_FACTOR_9", "CS_SITESPECIFIC_FACTOR_10",
"CS_SITESPECIFIC_FACTOR_11", "CS_SITESPECIFIC_FACTOR_12", "CS_SITESPECIFIC_FACTOR_13",
"CS_SITESPECIFIC_FACTOR_14", "CS_SITESPECIFIC_FACTOR_15", "CS_SITESPECIFIC_FACTOR_16",
"CS_SITESPECIFIC_FACTOR_17", "CS_SITESPECIFIC_FACTOR_18", "CS_SITESPECIFIC_FACTOR_19",
"CS_SITESPECIFIC_FACTOR_20", "CS_SITESPECIFIC_FACTOR_21", "CS_SITESPECIFIC_FACTOR_22",
"CS_SITESPECIFIC_FACTOR_23", "CS_SITESPECIFIC_FACTOR_24", "CS_SITESPECIFIC_FACTOR_25",
"CS_VERSION_LATEST", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS", "DX_DEFSURG_STARTED_DAYS",
"RX_SUMM_SURG_PRIM_SITE", "RX_HOSP_SURG_APPR_2010", "RX_SUMM_SURGICAL_MARGINS",
"RX_SUMM_SCOPE_REG_LN_SUR", "RX_SUMM_SURG_OTH_REGDIS", "SURG_DISCHARGE_DAYS", "READM_HOSP_30_DAYS",
"REASON_FOR_NO_SURGERY", "DX_RAD_STARTED_DAYS", "RX_SUMM_RADIATION", "RAD_LOCATION_OF_RX",
"RAD_TREAT_VOL", "RAD_REGIONAL_RX_MODALITY", "RAD_REGIONAL_DOSE_CGY", "RAD_BOOST_RX_MODALITY",
"RAD_BOOST_DOSE_CGY", "RAD_NUM_TREAT_VOL", "RX_SUMM_SURGRAD_SEQ", "RAD_ELAPSED_RX_DAYS",
"REASON_FOR_NO_RADIATION", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", "RX_SUMM_CHEMO",
"DX_HORMONE_STARTED_DAYS", "RX_SUMM_HORMONE", "DX_IMMUNO_STARTED_DAYS", "RX_SUMM_IMMUNOTHERAPY",
"RX_SUMM_TRNSPLNT_ENDO", "RX_SUMM_SYSTEMIC_SUR_SEQ", "DX_OTHER_STARTED_DAYS", "RX_SUMM_OTHER",
"PALLIATIVE_CARE", "RX_SUMM_TREATMENT_STATUS", "PUF_30_DAY_MORT_CD", "PUF_90_DAY_MORT_CD",
"DX_LASTCONTACT_DEATH_MONTHS", "PUF_VITAL_STATUS", "RX_HOSP_SURG_PRIM_SITE", "RX_HOSP_CHEMO",
"RX_HOSP_IMMUNOTHERAPY", "RX_HOSP_HORMONE", "RX_HOSP_OTHER", "PUF_MULT_SOURCE", "REFERENCE_DATE_FLAG",
"RX_SUMM_SCOPE_REG_LN_2012", "RX_HOSP_DXSTG_PROC", "PALLIATIVE_CARE_HOSP", "TUMOR_SIZE_SUMMARY",
"METS_AT_DX_OTHER", "METS_AT_DX_DISTANT_LN", "METS_AT_DX_BONE", "METS_AT_DX_BRAIN",
"METS_AT_DX_LIVER", "METS_AT_DX_LUNG", "NO_HSD_QUAR_16", "MED_INC_QUAR_16", "MEDICAID_EXPN_CODE")
#Read in data for each subsite
lip <- read_fwf('NCDBPUF_Lip.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
melanoma <- read_fwf('NCDBPUF_Melanoma.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
skin <- read_fwf('NCDBPUF_OtSkin.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgextr <- read_fwf('NCDBPUF_HodgExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgndal <- read_fwf('NCDBPUF_HodgNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLndal <- read_fwf('NCDBPUF_NHLNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLextr <- read_fwf('NCDBPUF_NHLExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
breast <- read_fwf('NCDBPUF_Breast.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vulva <- read_fwf('NCDBPUF_Vulva.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vagina <- read_fwf('NCDBPUF_Vagina.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
penis <- read_fwf('NCDBPUF_Penis.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
otleuk <- read_fwf('NCDBPUF_OtLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
otheracuteleuk <- read_fwf('NCDBPUF_OtAcLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
ALL <- read_fwf('NCDBPUF_ALymLeuk.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
#Combine data for all subsites
dat <- bind_rows(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast,
vulva, vagina, penis, NHLextr, otleuk, otheracuteleuk, ALL)
rm(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, vulva, vagina,
penis, NHLextr, otleuk, otheracuteleuk, ALL)
prim_site_text <- data_frame(PRIMARY_SITE = c(
#NHL sites
"C000",
"C001",
"C002",
"C003",
"C004",
"C005",
"C006",
"C008",
"C009",
"C019",
"C020",
"C021",
"C022",
"C023",
"C024",
"C028",
"C029",
"C030",
"C031",
"C039",
"C040",
"C041",
"C048",
"C049",
"C050",
"C051",
"C052",
"C058",
"C059",
"C060",
"C061",
"C062",
"C068",
"C069",
"C079",
"C098",
"C099",
"C111",
"C142",
"C300",
"C379",
"C420",
"C422",
"C424",
#skin/melanoma
"C440", "C441", "C442", "C443", "C444", "C445",
"C446", "C447", "C448", "C449",
#breast - nipple
"C500",
#vagina/vulva
"C510", "C511", "C512", "C518", "C519", "C529",
#penis
"C600", "C601", "C602", "C608", "C609", "C639",
"C770",
"C771",
"C772",
"C773",
"C774",
"C775",
"C778",
"C779"),
SITE_TEXT = c(
"C00.0 External Lip: Upper NOS",
"C00.1 External Lip: Lower NOS",
"C00.2 External Lip: NOS",
"C00.3 Lip: Upper Mucosa",
"C00.4 Lip: Lower Mucosa",
"C00.5 Lip: Mucosa NOS",
"C00.6 Lip: Commissure",
"C00.8 Lip: Overlapping",
"C00.9 Lip NOS",
"C01.9 Tongue: Base NOS",
"C02.0 Tongue: Dorsal NOS",
"C02.1 Tongue: Border, Tip",
"C02.2 Tongue: Ventral NOS",
"C02.3 Tongue: Anterior NOS",
"C02.4 Lingual Tonsil",
"C02.8 Tongue: Overlapping",
"C02.9 Tongue: NOS",
"C03.0 Gum: Upper",
"C03.1 Gum: Lower",
"C03.9 Gum NOS",
"C04.0 Mouth: Anterior Floor",
"C04.1 Mouth: Lateral Floor",
"C04.8 Mouth: Overlapping Floor",
"C04.9 Floor of Mouth NOS",
"C05.0 Hard Palate",
"C05.1 Soft Palate NOS",
"C05.2 Uvula",
"C05.8 Palate: Overlapping",
"C05.9 Palate NOS",
"C06.0 Cheek Mucosa",
"C06.1 Mouth: Vestibule",
"C06.2 Retromolar Area",
"C06.8 Mouth: Other Overlapping",
"C06.9 Mouth NOS",
"C07.9 Parotid Gland",
"C09.8 Tonsil: Overlapping",
"C09.9 Tonsil NOS",
"C11.1 Nasopharynx: Poster Wall",
"C14.2 Waldeyer Ring",
"C30.0 Nasal Cavity",
"C37.9 Thymus",
"C42.0 Blood",
"C42.2 Spleen",
"C42.4 Hematopoietic NOS",
#skin
"C44.0 Skin of lip, NOS",
"C44.1 Eyelid",
"C44.2 External ear",
"C44.3 Skin of ear and unspecified parts of face",
"C44.4 Skin of scalp and neck",
"C44.5 Skin of trunk",
"C44.6 Skin of upper limb and shoulder",
"C44.7 Skin of lower limb and hip",
"C44.8 Overlapping lesion of skin",
"C44.9 Skin, NOS",
#breast
"C50.0 Nipple",
#vulva/vagina
"C51.0 Labium majus",
"C51.1 Labium minus",
"C51.2 Clitoris",
"C51.8 Overlapping lesion of vulva",
"C51.9 Vulva, NOS",
"C52.9 Vagina, NOS",
#penis
"C60.0 Prepuce",
"C60.1 Glans penis",
"C60.2 Body of penis",
"C60.8 Overlapping lesion of penis",
"C60.9 Penis",
"C63.2 Scrotum, NOS",
"C77.0 Lymph Nodes: HeadFaceNeck",
"C77.1 Intrathoracic Lymph Nodes",
"C77.2 Intra-abdominal LymphNodes",
"C77.3 Lymph Nodes of axilla or arm ",
"C77.4 Lymph Nodes: Leg",
"C77.5 Pelvic Lymph Nodes",
"C77.8 Lymph Nodes: multiple region",
"C77.9 Lymph Node NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE)
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS", "RAD_REGIONAL_DOSE_CGY",
"RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS",
"DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
"RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
"Community Cancer Program" = "1",
"Comprehensive Comm Ca Program" = "2",
"Academic/Research Program" = "3",
"Integrated Network Ca Program" = "4",
"Other" = "9")) %>%
mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
"New England" = "1",
"Middle Atlantic" = "2",
"South Atlantic" = "3",
"East North Central" = "4",
"East South Central" = "5",
"West North Central" = "6",
"West South Central" = "7",
"Mountain" = "8",
"Pacific" = "9",
"out of US" = "0")) %>%
mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
"Northeast" = c("1", "2"),
"South" = c("3", "7"),
"Midwest" = c("4", "5", "6"),
"West" = c("8", "9"))) %>%
mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
mutate(SEX_F = fct_recode(SEX,
"Male" = "1",
"Female" = "2")) %>%
mutate(RACE_F = fct_collapse(RACE,
"White" = c("01"),
"Black" = c("02"),
"Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
"16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
"32", "96", "97"),
"Other/Unk" = c("03", "98", "99"))) %>%
mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
"Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"No" = c("0"),
"Unknown" = c("9"))) %>%
mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
"None" = "0",
"Private" = "1",
"Medicaid" = "2",
"Medicare" = "3",
"Other Government" = "4",
"Unknown" = "9")) %>%
mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
"Private")) %>%
mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
"Less than $38,000" = "1",
"$38,000 - $47,999" = "2",
"$48,000 - $62,999" = "3",
"$63,000 +" = "4")) %>%
mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
"21% or more" = "1",
"13 - 20.9%" = "2",
"7 - 12.9%" = "3",
"Less than 7%" = "4")) %>%
mutate(U_R_F = fct_collapse(UR_CD_13,
"Metro" = c("1", "2", "3"),
"Urban" = c("4", "5", "6", "7"),
"Rural" = c("8", "9"))) %>%
mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
All_Part_Prim = c("10", "11", "12", "13",
"14", "20", "21", "22"),
Other_Facility = c("00"))) %>%
mutate(GRADE_F = fct_recode(GRADE,
"Gr I: Well Diff" = "1",
"Gr II: Mod Diff" = "2",
"Gr III: Poor Diff" = "3",
"Gr IV: Undiff/Anaplastic" = "4",
"NA/Unkown" = "9")) %>%
mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
"N_A" = "88")) %>%
mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
"1")) %>%
mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
"N_A" = "88")) %>%
mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
"1")) %>%
mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
"N_A" = "88")) %>%
mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
"N_A" = "88")) %>%
mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
"No Residual" = "0",
"Residual, NOS" = "1",
"Microscopic Resid" = "2",
"Macroscopic Resid" = "3",
"Not evaluable" = "7",
"No surg" = "8",
"Unknown" = "9")) %>%
mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
"Yes" = c("1", "2", "3"),
"No" = c("0"),
"No surg/Unk/NA" = c("7", "8", "9"))) %>%
mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
"No_Surg_or_No_Readmit" = "0",
"Unplan_Readmit_Same" = "1",
"Plan_Readmit_Same" = "2",
"PlanUnplan_Same" = "3",
"Unknown" = "4")) %>%
mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
"None" = "0",
"Beam Radiation" = "1",
"Radioactive Implants" = "2",
"Radioisotopes" = "3",
"Beam + Imp or Isotopes" = "4",
"Radiation, NOS" = "5",
"Unknown" = "9")) %>%
mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
"Alive_30" = "0",
"Dead_30" = "1",
"Unknown" = "9")) %>%
mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
"Alive_90" = "0",
"Dead_90" = "1",
"Unknown" = "9")) %>%
mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
"Neg_LymphVasc_Inv" = "0",
"Pos_LumphVasc_Inv" = "1",
"N_A" = "8",
"Unknown" = "9")) %>%
mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
"No_Surg" = "0",
"Robot_Assist" = "1",
"Robot_to_Open" = "2",
"Endo_Lap" = "3",
"Endo_Lap_to_Open" = "4",
"Open_Unknown" = "5",
"Unknown" = "9")) %>%
mutate(All = "All") %>%
mutate(All = factor(All)) %>%
mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
"Surg performed" = "0",
"Surg not recommended" = "1",
"No surg due to pt factors" = "2",
"No surg, pt died" = "5",
"Surg rec, not done" = "6",
"Surg rec, pt refused" = "7",
"Surg rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
"Yes",
ifelse(REASON_FOR_NO_SURGERY == "9",
"Ukn",
"No"))) %>%
mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
SURGERY_YN == "No" ~ FALSE,
TRUE ~ NA)) %>%
mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
"Rad performed" = "0",
"Rad not recommended" = "1",
"No Rad due to pt factors" = "2",
"No Rad, pt died" = "5",
"Rad rec, not done" = "6",
"Rad rec, pt refused" = "7",
"Rad rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
"Yes",
ifelse(REASON_FOR_NO_RADIATION == "9",
NA,
"No"))) %>%
mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
"None or Surg or Rad" = "0",
"Rad before Surg" = "2",
"Surg before Rad" = "3",
"Rad before and after Surg" = "4",
"Intraop Rad" = "5",
"Intraop Rad plus other" = "6",
"Unknown" = "9")) %>%
mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Surg Alone",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Rad Alone",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
"No Treatment",
ifelse(RX_SUMM_SURGRAD_SEQ == "2",
"Rad then Surg",
ifelse(RX_SUMM_SURGRAD_SEQ == "3",
"Surg then Rad",
ifelse(RX_SUMM_SURGRAD_SEQ == "4",
"Rad before and after Surg",
"Other"))))))) %>%
mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
"Surg Alone",
"Surg then Rad",
"Rad Alone")) %>%
mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01", "02", "03"),
"Ukn" = c("88", "99"))) %>%
mutate(IMMUNO_YN = fct_collapse(RX_SUMM_IMMUNOTHERAPY,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01"),
"Ukn" = c("88", "99"))) %>%
mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Surg, No rad, No Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Rad, No Surg, No Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"No Surg, No Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
"Rad then Surg, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
"Surg then Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
"Rad before and after Surg, No Chemo",
ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Surg, No rad, Yes Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Rad, No Surg, Yes Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"No Surg, No Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
"Rad then Surg, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
"Surg then Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
"Rad before and after Surg, Yes Chemo",
"Other"))))))))))))) %>%
mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
mutate(T_SIZE = ifelse(T_SIZE == 0,
"No Tumor",
ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
"< 1 cm",
ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
"1-2 cm",
ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
"2-3 cm",
ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
"3-4 cm",
ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
"4-5 cm",
ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
"5-6 cm",
ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
T_SIZE == 980 | T_SIZE == 989 |
T_SIZE == 997,
">6 cm",
ifelse(T_SIZE == 988 | T_SIZE == 999,
"NA_unk",
"Microscopic focus")))))))))) %>%
mutate(T_SIZE = factor(T_SIZE)) %>%
mutate(T_SIZE = fct_relevel(T_SIZE,
"No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
"4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
CS_METS_DX_BONE == "1" ~ "Bone",
CS_METS_DX_BRAIN == "1" ~ "Brain",
CS_METS_DX_LIVER == "1" ~ "Liver",
TRUE ~ "None/Other/Unk/NA")) %>%
mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
"Non-Expansion State" = "0",
"Jan 2014 Expansion States" = "1",
"Early Expansion States (2010-13)" = "2",
"Late Expansion States (> Jan 2014)" = "3",
"Suppressed for Ages 0 - 39" = "9")) %>%
mutate(EXPN_GROUP = case_when(MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in%
c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013")) %>%
mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>%
mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No" &
IMMUNO_YN == "No", FALSE,
ifelse(CHEMO_YN == "Ukn", NA,
TRUE)))
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
"HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
"CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
"BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
"MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
mutate_at(fact_vars_2, funs(factor(.)))
Table of variables for all cases:
data <- data %>% droplevels()
p_table(data,
vars = c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "FACILITY_GEOGRAPHY", "AGE", "AGE_F", "AGE_40",
"SEX_F", "RACE_F", "HISPANIC", "INSURANCE_F",
"INCOME_F", "EDUCATION_F", "U_R_F", "CROWFLY", "CDCC_TOTAL_BEST",
"SITE_TEXT", "HISTOLOGY", "BEHAVIOR", "GRADE_F",
"DX_STAGING_PROC_DAYS", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "MARGINS", "MARGINS_YN", "SURG_DISCHARGE_DAYS",
"READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "DX_LASTCONTACT_DEATH_MONTHS",
"LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "SURG_RAD_SEQ",
"SURG_RAD_SEQ_C", "SURGERY_YN", "RADIATION_YN", "CHEMO_YN", "IMMUNO_YN", "Tx_YN", "mets_at_dx",
"MEDICAID_EXPN_CODE", "EXPN_GROUP", "YEAR_OF_DIAGNOSIS"))
| n |
|
1180 |
| FACILITY_TYPE_F (%) |
Community Cancer Program |
69 ( 5.8) |
|
Comprehensive Comm Ca Program |
297 ( 25.2) |
|
Academic/Research Program |
510 ( 43.2) |
|
Integrated Network Ca Program |
96 ( 8.1) |
|
NA |
208 ( 17.6) |
| FACILITY_LOCATION_F (%) |
New England |
58 ( 4.9) |
|
Middle Atlantic |
185 ( 15.7) |
|
South Atlantic |
196 ( 16.6) |
|
East North Central |
200 ( 16.9) |
|
East South Central |
60 ( 5.1) |
|
West North Central |
65 ( 5.5) |
|
West South Central |
42 ( 3.6) |
|
Mountain |
54 ( 4.6) |
|
Pacific |
112 ( 9.5) |
|
NA |
208 ( 17.6) |
| FACILITY_GEOGRAPHY (%) |
Northeast |
243 ( 20.6) |
|
South |
238 ( 20.2) |
|
Midwest |
325 ( 27.5) |
|
West |
166 ( 14.1) |
|
NA |
208 ( 17.6) |
| AGE (mean (sd)) |
|
57.02 (19.17) |
| AGE_F (%) |
(0,54] |
493 ( 41.8) |
|
(54,64] |
233 ( 19.7) |
|
(64,74] |
221 ( 18.7) |
|
(74,100] |
232 ( 19.7) |
|
NA |
1 ( 0.1) |
| AGE_40 (%) |
(0,40] |
218 ( 18.5) |
|
(40,100] |
961 ( 81.4) |
|
NA |
1 ( 0.1) |
| SEX_F (%) |
Male |
683 ( 57.9) |
|
Female |
497 ( 42.1) |
| RACE_F (%) |
White |
987 ( 83.6) |
|
Black |
126 ( 10.7) |
|
Other/Unk |
33 ( 2.8) |
|
Asian |
34 ( 2.9) |
| HISPANIC (%) |
No |
1058 ( 89.7) |
|
Yes |
65 ( 5.5) |
|
Unknown |
57 ( 4.8) |
| INSURANCE_F (%) |
Private |
614 ( 52.0) |
|
None |
30 ( 2.5) |
|
Medicaid |
62 ( 5.3) |
|
Medicare |
429 ( 36.4) |
|
Other Government |
17 ( 1.4) |
|
Unknown |
28 ( 2.4) |
| INCOME_F (%) |
Less than $38,000 |
156 ( 13.2) |
|
$38,000 - $47,999 |
238 ( 20.2) |
|
$48,000 - $62,999 |
365 ( 30.9) |
|
$63,000 + |
410 ( 34.7) |
|
NA |
11 ( 0.9) |
| EDUCATION_F (%) |
21% or more |
152 ( 12.9) |
|
13 - 20.9% |
266 ( 22.5) |
|
7 - 12.9% |
433 ( 36.7) |
|
Less than 7% |
319 ( 27.0) |
|
NA |
10 ( 0.8) |
| U_R_F (%) |
Metro |
980 ( 83.1) |
|
Urban |
153 ( 13.0) |
|
Rural |
13 ( 1.1) |
|
NA |
34 ( 2.9) |
| CROWFLY (mean (sd)) |
|
30.18 (102.48) |
| CDCC_TOTAL_BEST (%) |
0 |
1043 ( 88.4) |
|
1 |
97 ( 8.2) |
|
2 |
25 ( 2.1) |
|
3 |
15 ( 1.3) |
| SITE_TEXT (%) |
C44.0 Skin of lip, NOS |
11 ( 0.9) |
|
C44.1 Eyelid |
5 ( 0.4) |
|
C44.2 External ear |
11 ( 0.9) |
|
C44.3 Skin of ear and unspecified parts of face |
113 ( 9.6) |
|
C44.4 Skin of scalp and neck |
66 ( 5.6) |
|
C44.5 Skin of trunk |
217 ( 18.4) |
|
C44.6 Skin of upper limb and shoulder |
199 ( 16.9) |
|
C44.7 Skin of lower limb and hip |
207 ( 17.5) |
|
C44.8 Overlapping lesion of skin |
52 ( 4.4) |
|
C44.9 Skin, NOS |
290 ( 24.6) |
|
C51.9 Vulva, NOS |
3 ( 0.3) |
|
C52.9 Vagina, NOS |
1 ( 0.1) |
|
C60.0 Prepuce |
2 ( 0.2) |
|
C60.9 Penis |
3 ( 0.3) |
| HISTOLOGY (%) |
9718 |
1180 (100.0) |
| BEHAVIOR (%) |
3 |
1180 (100.0) |
| GRADE_F (%) |
Gr II: Mod Diff |
1 ( 0.1) |
|
Gr III: Poor Diff |
2 ( 0.2) |
|
Gr IV: Undiff/Anaplastic |
26 ( 2.2) |
|
5 |
923 ( 78.2) |
|
6 |
21 ( 1.8) |
|
7 |
2 ( 0.2) |
|
8 |
1 ( 0.1) |
|
NA/Unkown |
204 ( 17.3) |
| DX_STAGING_PROC_DAYS (mean (sd)) |
|
3.89 (28.32) |
| TNM_CLIN_T (%) |
N_A |
1161 ( 98.4) |
|
cX |
1 ( 0.1) |
|
NA |
18 ( 1.5) |
| TNM_CLIN_N (%) |
N_A |
1161 ( 98.4) |
|
cX |
1 ( 0.1) |
|
NA |
18 ( 1.5) |
| TNM_CLIN_M (%) |
N_A |
1161 ( 98.4) |
|
c0 |
1 ( 0.1) |
|
NA |
18 ( 1.5) |
| TNM_CLIN_STAGE_GROUP (%) |
1 |
340 ( 28.8) |
|
1A |
394 ( 33.4) |
|
1B |
14 ( 1.2) |
|
2 |
24 ( 2.0) |
|
2A |
32 ( 2.7) |
|
2B |
12 ( 1.0) |
|
3 |
11 ( 0.9) |
|
3A |
8 ( 0.7) |
|
3B |
3 ( 0.3) |
|
4 |
56 ( 4.7) |
|
4A |
38 ( 3.2) |
|
4B |
18 ( 1.5) |
|
N_A |
2 ( 0.2) |
|
99 |
227 ( 19.2) |
|
NA |
1 ( 0.1) |
| TNM_PATH_T (%) |
N_A |
1141 ( 96.7) |
|
NA |
39 ( 3.3) |
| TNM_PATH_N (%) |
N_A |
1141 ( 96.7) |
|
NA |
39 ( 3.3) |
| TNM_PATH_M (%) |
N_A |
1106 ( 93.7) |
|
NA |
74 ( 6.3) |
| TNM_PATH_STAGE_GROUP (%) |
1 |
116 ( 9.8) |
|
1A |
116 ( 9.8) |
|
1B |
9 ( 0.8) |
|
2 |
12 ( 1.0) |
|
2A |
7 ( 0.6) |
|
2B |
4 ( 0.3) |
|
3 |
6 ( 0.5) |
|
3A |
1 ( 0.1) |
|
4 |
22 ( 1.9) |
|
4A |
16 ( 1.4) |
|
4B |
6 ( 0.5) |
|
N_A |
1 ( 0.1) |
|
99 |
777 ( 65.8) |
|
NA |
87 ( 7.4) |
| DX_RX_STARTED_DAYS (mean (sd)) |
|
41.70 (56.67) |
| DX_SURG_STARTED_DAYS (mean (sd)) |
|
12.43 (32.44) |
| DX_DEFSURG_STARTED_DAYS (mean (sd)) |
|
17.34 (35.57) |
| MARGINS (%) |
No Residual |
179 ( 15.2) |
|
Residual, NOS |
13 ( 1.1) |
|
Microscopic Resid |
12 ( 1.0) |
|
Macroscopic Resid |
5 ( 0.4) |
|
Not evaluable |
44 ( 3.7) |
|
No surg |
816 ( 69.2) |
|
Unknown |
111 ( 9.4) |
| MARGINS_YN (%) |
No |
179 ( 15.2) |
|
Yes |
30 ( 2.5) |
|
No surg/Unk/NA |
971 ( 82.3) |
| SURG_DISCHARGE_DAYS (mean (sd)) |
|
1.88 (11.13) |
| READM_HOSP_30_DAYS_F (%) |
No_Surg_or_No_Readmit |
1141 ( 96.7) |
|
Unplan_Readmit_Same |
4 ( 0.3) |
|
Plan_Readmit_Same |
13 ( 1.1) |
|
9 |
22 ( 1.9) |
| RX_SUMM_RADIATION_F (%) |
None |
699 ( 59.2) |
|
Beam Radiation |
461 ( 39.1) |
|
Radioactive Implants |
8 ( 0.7) |
|
Beam + Imp or Isotopes |
1 ( 0.1) |
|
Radiation, NOS |
5 ( 0.4) |
|
Unknown |
6 ( 0.5) |
| PUF_30_DAY_MORT_CD_F (%) |
Alive_30 |
340 ( 28.8) |
|
Dead_30 |
3 ( 0.3) |
|
Unknown |
6 ( 0.5) |
|
NA |
831 ( 70.4) |
| PUF_90_DAY_MORT_CD_F (%) |
Alive_90 |
335 ( 28.4) |
|
Dead_90 |
6 ( 0.5) |
|
Unknown |
8 ( 0.7) |
|
NA |
831 ( 70.4) |
| DX_LASTCONTACT_DEATH_MONTHS (mean (sd)) |
|
57.05 (43.00) |
| LYMPH_VASCULAR_INVASION_F (%) |
N_A |
567 ( 48.1) |
|
NA |
613 ( 51.9) |
| RX_HOSP_SURG_APPR_2010_F (%) |
No_Surg |
455 ( 38.6) |
|
Endo_Lap_to_Open |
1 ( 0.1) |
|
Open_Unknown |
110 ( 9.3) |
|
Unknown |
1 ( 0.1) |
|
NA |
613 ( 51.9) |
| SURG_RAD_SEQ (%) |
Surg Alone |
217 ( 18.4) |
|
Surg then Rad |
140 ( 11.9) |
|
Rad Alone |
332 ( 28.1) |
|
No Treatment |
473 ( 40.1) |
|
Other |
16 ( 1.4) |
|
Rad then Surg |
2 ( 0.2) |
| SURG_RAD_SEQ_C (%) |
Surg, No rad, No Chemo |
163 ( 13.8) |
|
Surg then Rad, No Chemo |
111 ( 9.4) |
|
Surg then Rad, Yes Chemo |
25 ( 2.1) |
|
Surg, No rad, Yes Chemo |
47 ( 4.0) |
|
No Surg, No Rad, Yes Chemo |
192 ( 16.3) |
|
No Surg, No Rad, No Chemo |
268 ( 22.7) |
|
Other |
48 ( 4.1) |
|
Rad, No Surg, Yes Chemo |
56 ( 4.7) |
|
Rad, No Surg, No Chemo |
268 ( 22.7) |
|
Rad then Surg, No Chemo |
2 ( 0.2) |
| SURGERY_YN (%) |
No |
807 ( 68.4) |
|
Ukn |
11 ( 0.9) |
|
Yes |
362 ( 30.7) |
| RADIATION_YN (%) |
No |
697 ( 59.1) |
|
Yes |
475 ( 40.3) |
|
NA |
8 ( 0.7) |
| CHEMO_YN (%) |
No |
819 ( 69.4) |
|
Yes |
323 ( 27.4) |
|
Ukn |
38 ( 3.2) |
| IMMUNO_YN (%) |
No |
1142 ( 96.8) |
|
Yes |
25 ( 2.1) |
|
Ukn |
13 ( 1.1) |
| Tx_YN (%) |
FALSE |
258 ( 21.9) |
|
TRUE |
884 ( 74.9) |
|
NA |
38 ( 3.2) |
| mets_at_dx (%) |
None/Other/Unk/NA |
1180 (100.0) |
| MEDICAID_EXPN_CODE (%) |
Non-Expansion State |
320 ( 27.1) |
|
Jan 2014 Expansion States |
323 ( 27.4) |
|
Early Expansion States (2010-13) |
173 ( 14.7) |
|
Late Expansion States (> Jan 2014) |
156 ( 13.2) |
|
Suppressed for Ages 0 - 39 |
208 ( 17.6) |
| EXPN_GROUP (%) |
Exclude |
208 ( 17.6) |
|
Post-Expansion |
146 ( 12.4) |
|
Pre-Expansion |
826 ( 70.0) |
| YEAR_OF_DIAGNOSIS (%) |
2004 |
97 ( 8.2) |
|
2005 |
94 ( 8.0) |
|
2006 |
92 ( 7.8) |
|
2007 |
109 ( 9.2) |
|
2008 |
101 ( 8.6) |
|
2009 |
120 ( 10.2) |
|
2010 |
119 ( 10.1) |
|
2011 |
90 ( 7.6) |
|
2012 |
86 ( 7.3) |
|
2013 |
87 ( 7.4) |
|
2014 |
87 ( 7.4) |
|
2015 |
98 ( 8.3) |
preExpMedicare <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion" & INSURANCE_F == "Medicare"))
postExpMedicare <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion" & INSURANCE_F == "Medicare"))
# p = 0.25 when comparing change in proportion of patients with Medicare before and after ACA expansion
prop.test(c(preExpMedicare, postExpMedicare),
c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
2-sample test for equality of proportions with continuity correction
data: c(preExpMedicare, postExpMedicare) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpMedicare, postExpMedicare) out of filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 0.00373, df = 1, p-value = 0.9513
alternative hypothesis: two.sided
95 percent confidence interval:
-0.08445440 0.09795402
sample estimates:
prop 1 prop 2
0.4382567 0.4315068
preExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion") %>%
filter(INSURANCE_F == "None"))
postExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion") %>%
filter(INSURANCE_F == "None"))
# Significant decrease in the overall proportion of patients without insurance after ACA expansion
prop.test(c(preExpNoInsurance, postExpNoInsurance),
c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
Chi-squared approximation may be incorrect
2-sample test for equality of proportions with continuity correction
data: c(preExpNoInsurance, postExpNoInsurance) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpNoInsurance, postExpNoInsurance) out of filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 0.0007149, df = 1, p-value = 0.9787
alternative hypothesis: two.sided
95 percent confidence interval:
-0.03680837 0.02801869
sample estimates:
prop 1 prop 2
0.02300242 0.02739726
p_table(no_Excludes, strata = "EXPN_GROUP", vars = "DX_RX_STARTED_DAYS")
| n |
|
248 |
1137 |
|
|
| DX_RX_STARTED_DAYS (mean (sd)) |
|
48.96 (44.78) |
48.91 (143.60) |
0.996 |
|
data <- data %>% mutate(Insured = INSURANCE_F != "Unknown")
Kaplan Meier Analysis
All
uni_var(test_var = "All", data_imp = data)
_________________________________________________
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
n events median 0.95LCL 0.95UCL
1180 300 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 970 106 0.907 0.00865 0.890 0.924
24 822 62 0.846 0.01097 0.825 0.868
36 706 28 0.816 0.01197 0.793 0.840
48 614 20 0.792 0.01280 0.767 0.817
60 514 23 0.760 0.01389 0.733 0.788
120 124 54 0.634 0.02048 0.595 0.675
## Univariable Cox Proportional Hazard Model for: All
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: All



Facility Type
uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
208 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Community Cancer Program 69 21 NA 93.9 NA
FACILITY_TYPE_F=Comprehensive Comm Ca Program 297 104 118 98.2 NA
FACILITY_TYPE_F=Academic/Research Program 510 135 NA 130.6 NA
FACILITY_TYPE_F=Integrated Network Ca Program 96 24 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
208 observations deleted due to missingness
FACILITY_TYPE_F=Community Cancer Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 52 9 0.859 0.0437 0.777 0.949
24 50 1 0.842 0.0459 0.757 0.937
36 40 3 0.789 0.0522 0.693 0.899
48 36 1 0.770 0.0545 0.670 0.884
60 32 1 0.748 0.0572 0.643 0.869
120 8 6 0.556 0.0815 0.417 0.741
FACILITY_TYPE_F=Comprehensive Comm Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 232 39 0.863 0.0204 0.824 0.904
24 191 22 0.778 0.0252 0.730 0.829
36 162 5 0.756 0.0263 0.706 0.810
48 137 9 0.712 0.0286 0.658 0.770
60 110 10 0.655 0.0315 0.596 0.720
120 23 16 0.487 0.0466 0.404 0.587
FACILITY_TYPE_F=Academic/Research Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 417 43 0.913 0.0127 0.888 0.938
24 354 27 0.851 0.0165 0.820 0.884
36 301 18 0.806 0.0187 0.770 0.844
48 270 6 0.789 0.0196 0.752 0.829
60 224 10 0.758 0.0211 0.718 0.801
120 51 27 0.622 0.0308 0.564 0.685
FACILITY_TYPE_F=Integrated Network Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 82 9 0.904 0.0305 0.846 0.966
24 65 6 0.832 0.0397 0.758 0.914
36 57 0 0.832 0.0397 0.758 0.914
48 47 3 0.785 0.0460 0.699 0.880
60 40 2 0.749 0.0504 0.656 0.854
120 12 4 0.634 0.0700 0.511 0.788
## Univariable Cox Proportional Hazard Model for: FACILITY_TYPE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
n= 972, number of events= 284
(208 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_TYPE_FComprehensive Comm Ca Program 0.2180 1.2436 0.2393 0.911 0.362
FACILITY_TYPE_FAcademic/Research Program -0.1476 0.8628 0.2346 -0.629 0.529
FACILITY_TYPE_FIntegrated Network Ca Program -0.2048 0.8148 0.2988 -0.685 0.493
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FComprehensive Comm Ca Program 1.2436 0.8041 0.7779 1.988
FACILITY_TYPE_FAcademic/Research Program 0.8628 1.1591 0.5448 1.366
FACILITY_TYPE_FIntegrated Network Ca Program 0.8148 1.2273 0.4536 1.464
Concordance= 0.542 (se = 0.017 )
Rsquare= 0.009 (max possible= 0.975 )
Likelihood ratio test= 8.61 on 3 df, p=0.03491
Wald test = 8.86 on 3 df, p=0.03119
Score (logrank) test = 8.96 on 3 df, p=0.02982
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_TYPE_F



Facility Location
uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
208 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England 58 13 NA NA NA
FACILITY_LOCATION_F=Middle Atlantic 185 62 91.7 82.6 NA
FACILITY_LOCATION_F=South Atlantic 196 69 127.3 105.0 NA
FACILITY_LOCATION_F=East North Central 200 55 NA 117.9 NA
FACILITY_LOCATION_F=East South Central 60 15 NA NA NA
FACILITY_LOCATION_F=West North Central 65 17 NA 127.2 NA
FACILITY_LOCATION_F=West South Central 42 11 NA 84.6 NA
FACILITY_LOCATION_F=Mountain 54 11 NA NA NA
FACILITY_LOCATION_F=Pacific 112 31 135.6 104.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
208 observations deleted due to missingness
FACILITY_LOCATION_F=New England
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 43 6 0.882 0.0453 0.797 0.975
24 39 1 0.861 0.0487 0.771 0.962
36 30 2 0.812 0.0570 0.708 0.932
48 28 2 0.758 0.0648 0.641 0.896
60 24 1 0.728 0.0689 0.604 0.876
120 7 1 0.672 0.0833 0.527 0.857
FACILITY_LOCATION_F=Middle Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 153 20 0.888 0.0236 0.843 0.936
24 126 13 0.810 0.0299 0.754 0.871
36 106 2 0.796 0.0310 0.737 0.859
48 88 6 0.748 0.0347 0.683 0.819
60 68 6 0.694 0.0387 0.622 0.774
120 8 15 0.420 0.0686 0.305 0.578
FACILITY_LOCATION_F=South Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 155 24 0.872 0.0245 0.825 0.921
24 125 16 0.779 0.0309 0.721 0.842
36 110 8 0.728 0.0339 0.664 0.797
48 98 4 0.700 0.0353 0.634 0.773
60 85 6 0.655 0.0375 0.585 0.733
120 21 8 0.557 0.0465 0.473 0.656
FACILITY_LOCATION_F=East North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 164 22 0.888 0.0226 0.844 0.933
24 138 11 0.824 0.0280 0.771 0.881
36 117 3 0.806 0.0292 0.751 0.865
48 109 1 0.799 0.0298 0.743 0.860
60 94 2 0.783 0.0313 0.724 0.847
120 22 15 0.574 0.0564 0.473 0.696
FACILITY_LOCATION_F=East South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 50 4 0.929 0.0341 0.865 0.999
24 44 4 0.854 0.0478 0.766 0.953
36 42 0 0.854 0.0478 0.766 0.953
48 34 1 0.832 0.0513 0.738 0.939
60 26 3 0.758 0.0621 0.646 0.890
120 7 3 0.654 0.0777 0.518 0.825
FACILITY_LOCATION_F=West North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 52 8 0.875 0.0413 0.798 0.960
24 44 2 0.839 0.0468 0.752 0.936
36 36 3 0.780 0.0547 0.680 0.895
48 30 2 0.736 0.0596 0.628 0.863
60 23 0 0.736 0.0596 0.628 0.863
120 7 1 0.687 0.0731 0.558 0.847
FACILITY_LOCATION_F=West South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 27 7 0.826 0.0600 0.716 0.952
24 24 1 0.793 0.0661 0.673 0.933
36 23 0 0.793 0.0661 0.673 0.933
48 19 1 0.757 0.0722 0.627 0.912
60 16 0 0.757 0.0722 0.627 0.912
120 2 2 0.611 0.1095 0.430 0.869
FACILITY_LOCATION_F=Mountain
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 48 1 0.981 0.0183 0.946 1.000
24 41 3 0.920 0.0384 0.848 0.998
36 32 2 0.875 0.0479 0.786 0.974
48 29 1 0.847 0.0540 0.748 0.960
60 24 2 0.786 0.0650 0.669 0.925
120 6 2 0.711 0.0774 0.575 0.881
FACILITY_LOCATION_F=Pacific
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 91 8 0.924 0.0257 0.875 0.976
24 79 5 0.871 0.0336 0.807 0.939
36 64 6 0.800 0.0416 0.722 0.885
48 55 1 0.787 0.0429 0.707 0.875
60 46 3 0.739 0.0482 0.651 0.840
120 14 6 0.599 0.0657 0.483 0.743
## Univariable Cox Proportional Hazard Model for: FACILITY_LOCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
n= 972, number of events= 284
(208 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic 0.44210 1.55597 0.30544 1.447 0.148
FACILITY_LOCATION_FSouth Atlantic 0.43001 1.53727 0.30243 1.422 0.155
FACILITY_LOCATION_FEast North Central 0.14017 1.15047 0.30846 0.454 0.650
FACILITY_LOCATION_FEast South Central 0.02412 1.02441 0.37899 0.064 0.949
FACILITY_LOCATION_FWest North Central 0.16584 1.18039 0.36856 0.450 0.653
FACILITY_LOCATION_FWest South Central 0.30722 1.35964 0.40999 0.749 0.454
FACILITY_LOCATION_FMountain -0.18741 0.82911 0.40978 -0.457 0.647
FACILITY_LOCATION_FPacific 0.14802 1.15953 0.33047 0.448 0.654
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic 1.5560 0.6427 0.8551 2.831
FACILITY_LOCATION_FSouth Atlantic 1.5373 0.6505 0.8498 2.781
FACILITY_LOCATION_FEast North Central 1.1505 0.8692 0.6285 2.106
FACILITY_LOCATION_FEast South Central 1.0244 0.9762 0.4874 2.153
FACILITY_LOCATION_FWest North Central 1.1804 0.8472 0.5732 2.431
FACILITY_LOCATION_FWest South Central 1.3596 0.7355 0.6087 3.037
FACILITY_LOCATION_FMountain 0.8291 1.2061 0.3714 1.851
FACILITY_LOCATION_FPacific 1.1595 0.8624 0.6067 2.216
Concordance= 0.543 (se = 0.018 )
Rsquare= 0.01 (max possible= 0.975 )
Likelihood ratio test= 9.56 on 8 df, p=0.2974
Wald test = 9.29 on 8 df, p=0.3181
Score (logrank) test = 9.43 on 8 df, p=0.3075
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_LOCATION_F



Facility Geography
uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
208 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast 243 75 110 85 NA
FACILITY_GEOGRAPHY=South 238 80 127 106 NA
FACILITY_GEOGRAPHY=Midwest 325 87 NA 140 NA
FACILITY_GEOGRAPHY=West 166 42 NA 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
208 observations deleted due to missingness
FACILITY_GEOGRAPHY=Northeast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 196 26 0.887 0.0209 0.847 0.929
24 165 14 0.822 0.0257 0.773 0.873
36 136 4 0.799 0.0273 0.748 0.855
48 116 8 0.750 0.0306 0.693 0.813
60 92 7 0.702 0.0337 0.639 0.771
120 15 16 0.490 0.0542 0.395 0.609
FACILITY_GEOGRAPHY=South
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 182 31 0.863 0.0228 0.820 0.909
24 149 17 0.780 0.0282 0.727 0.837
36 133 8 0.737 0.0305 0.679 0.799
48 117 5 0.707 0.0320 0.647 0.773
60 101 6 0.669 0.0339 0.606 0.739
120 23 10 0.563 0.0433 0.484 0.655
FACILITY_GEOGRAPHY=Midwest
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 266 34 0.893 0.0174 0.859 0.928
24 226 17 0.833 0.0215 0.792 0.876
36 195 6 0.810 0.0228 0.766 0.856
48 173 4 0.793 0.0239 0.747 0.841
60 143 5 0.768 0.0256 0.720 0.820
120 36 19 0.608 0.0413 0.532 0.695
FACILITY_GEOGRAPHY=West
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 139 9 0.943 0.0184 0.908 0.980
24 120 8 0.887 0.0260 0.837 0.939
36 96 8 0.824 0.0323 0.763 0.890
48 84 2 0.806 0.0340 0.742 0.875
60 70 5 0.754 0.0389 0.682 0.835
120 20 8 0.636 0.0515 0.543 0.745
## Univariable Cox Proportional Hazard Model for: FACILITY_GEOGRAPHY
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
n= 972, number of events= 284
(208 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_GEOGRAPHYSouth 0.06242 1.06441 0.16087 0.388 0.698
FACILITY_GEOGRAPHYMidwest -0.22564 0.79800 0.15773 -1.431 0.153
FACILITY_GEOGRAPHYWest -0.30079 0.74023 0.19298 -1.559 0.119
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth 1.0644 0.9395 0.7766 1.459
FACILITY_GEOGRAPHYMidwest 0.7980 1.2531 0.5858 1.087
FACILITY_GEOGRAPHYWest 0.7402 1.3509 0.5071 1.081
Concordance= 0.545 (se = 0.018 )
Rsquare= 0.006 (max possible= 0.975 )
Likelihood ratio test= 5.95 on 3 df, p=0.114
Wald test = 5.91 on 3 df, p=0.1159
Score (logrank) test = 5.96 on 3 df, p=0.1137
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_GEOGRAPHY



Age Group
uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
AGE_F=(0,54] 493 59 NA NA NA
AGE_F=(54,64] 233 41 NA NA NA
AGE_F=(64,74] 221 63 135.6 115.3 NA
AGE_F=(74,100] 232 137 54.1 36.2 66.1
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
1 observation deleted due to missingness
AGE_F=(0,54]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 432 20 0.958 0.00928 0.940 0.976
24 377 17 0.918 0.01289 0.893 0.944
36 336 6 0.903 0.01406 0.876 0.931
48 297 3 0.895 0.01476 0.866 0.924
60 252 3 0.885 0.01559 0.855 0.916
120 72 10 0.830 0.02301 0.786 0.876
AGE_F=(54,64]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 191 15 0.932 0.0170 0.899 0.966
24 162 8 0.890 0.0218 0.848 0.934
36 141 2 0.878 0.0230 0.834 0.924
48 123 4 0.852 0.0259 0.802 0.904
60 104 4 0.822 0.0288 0.768 0.881
120 20 7 0.711 0.0481 0.623 0.812
AGE_F=(64,74]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 183 18 0.915 0.0192 0.878 0.953
24 157 11 0.858 0.0245 0.812 0.908
36 130 7 0.818 0.0277 0.765 0.874
48 114 3 0.798 0.0294 0.742 0.857
60 95 7 0.746 0.0333 0.683 0.814
120 23 13 0.585 0.0508 0.493 0.693
AGE_F=(74,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 163 53 0.766 0.0282 0.713 0.823
24 125 26 0.639 0.0327 0.578 0.707
36 98 13 0.568 0.0345 0.504 0.640
48 80 10 0.508 0.0358 0.442 0.583
60 63 9 0.446 0.0369 0.379 0.524
120 9 24 0.210 0.0419 0.142 0.310
## Univariable Cox Proportional Hazard Model for: AGE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n= 1179, number of events= 300
(1 observation deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
AGE_F(54,64] 0.5272 1.6941 0.2035 2.590 0.00959 **
AGE_F(64,74] 0.9893 2.6895 0.1813 5.458 4.81e-08 ***
AGE_F(74,100] 1.9982 7.3756 0.1567 12.750 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64] 1.694 0.5903 1.137 2.524
AGE_F(64,74] 2.689 0.3718 1.885 3.837
AGE_F(74,100] 7.376 0.1356 5.425 10.028
Concordance= 0.696 (se = 0.017 )
Rsquare= 0.148 (max possible= 0.964 )
Likelihood ratio test= 188.8 on 3 df, p=0
Wald test = 190.9 on 3 df, p=0
Score (logrank) test = 240.7 on 3 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_F



Age Group
uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
AGE_40=(0,40] 218 17 NA NA NA
AGE_40=(40,100] 961 283 NA 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
1 observation deleted due to missingness
AGE_40=(0,40]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 196 6 0.971 0.0116 0.949 0.994
24 171 6 0.940 0.0170 0.907 0.973
36 154 2 0.928 0.0185 0.893 0.965
48 133 1 0.922 0.0194 0.885 0.961
60 113 0 0.922 0.0194 0.885 0.961
120 31 2 0.883 0.0329 0.821 0.950
AGE_40=(40,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 773 100 0.892 0.0102 0.872 0.912
24 650 56 0.824 0.0128 0.800 0.850
36 551 26 0.790 0.0140 0.763 0.818
48 481 19 0.761 0.0149 0.732 0.791
60 401 23 0.722 0.0162 0.691 0.755
120 93 52 0.576 0.0235 0.531 0.624
## Univariable Cox Proportional Hazard Model for: AGE_40
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n= 1179, number of events= 300
(1 observation deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
AGE_40(40,100] 1.5060 4.5086 0.2498 6.028 1.66e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100] 4.509 0.2218 2.763 7.357
Concordance= 0.573 (se = 0.012 )
Rsquare= 0.048 (max possible= 0.964 )
Likelihood ratio test= 57.48 on 1 df, p=3.419e-14
Wald test = 36.34 on 1 df, p=1.658e-09
Score (logrank) test = 43.73 on 1 df, p=3.772e-11
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_40



Gender
uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n events median 0.95LCL 0.95UCL
SEX_F=Male 683 172 NA 140 NA
SEX_F=Female 497 128 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
SEX_F=Male
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 566 59 0.911 0.0111 0.889 0.933
24 477 36 0.850 0.0142 0.823 0.878
36 412 15 0.822 0.0155 0.792 0.853
48 364 10 0.801 0.0165 0.770 0.834
60 302 16 0.763 0.0182 0.729 0.800
120 73 29 0.646 0.0267 0.596 0.700
SEX_F=Female
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 404 47 0.901 0.0137 0.875 0.928
24 345 26 0.840 0.0172 0.807 0.875
36 294 13 0.807 0.0188 0.771 0.845
48 250 10 0.778 0.0203 0.739 0.819
60 212 7 0.755 0.0215 0.714 0.798
120 51 25 0.618 0.0317 0.559 0.683
## Univariable Cox Proportional Hazard Model for: SEX_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
SEX_FFemale 0.03761 1.03833 0.11675 0.322 0.747
exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale 1.038 0.9631 0.826 1.305
Concordance= 0.508 (se = 0.015 )
Rsquare= 0 (max possible= 0.964 )
Likelihood ratio test= 0.1 on 1 df, p=0.7476
Wald test = 0.1 on 1 df, p=0.7473
Score (logrank) test = 0.1 on 1 df, p=0.7473
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SEX_F



RACE_F
uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n events median 0.95LCL 0.95UCL
RACE_F=White 987 234 NA NA NA
RACE_F=Black 126 55 92.6 53.4 NA
RACE_F=Other/Unk 33 7 NA NA NA
RACE_F=Asian 34 4 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
RACE_F=White
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 821 78 0.918 0.00895 0.900 0.935
24 703 46 0.864 0.01139 0.842 0.887
36 605 23 0.834 0.01257 0.810 0.859
48 526 16 0.811 0.01350 0.785 0.838
60 446 21 0.777 0.01488 0.748 0.806
120 109 45 0.651 0.02230 0.608 0.696
RACE_F=Black
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 88 27 0.778 0.0378 0.707 0.856
24 69 11 0.676 0.0436 0.596 0.767
36 57 5 0.625 0.0459 0.541 0.722
48 49 3 0.590 0.0476 0.504 0.691
60 38 1 0.577 0.0484 0.489 0.680
120 10 6 0.449 0.0616 0.343 0.587
RACE_F=Other/Unk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 29 1 0.970 0.0298 0.913 1.000
24 23 4 0.836 0.0672 0.714 0.979
36 20 0 0.836 0.0672 0.714 0.979
48 18 1 0.794 0.0757 0.659 0.957
60 15 0 0.794 0.0757 0.659 0.957
120 4 1 0.733 0.0913 0.574 0.936
RACE_F=Asian
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 32 0 1.000 0.0000 1.000 1
24 27 1 0.966 0.0339 0.901 1
36 24 0 0.966 0.0339 0.901 1
48 21 0 0.966 0.0339 0.901 1
60 15 1 0.912 0.0612 0.800 1
120 1 2 0.776 0.1029 0.599 1
## Univariable Cox Proportional Hazard Model for: RACE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
RACE_FBlack 0.8317 2.2972 0.1501 5.540 3.02e-08 ***
RACE_FOther/Unk -0.1506 0.8602 0.3836 -0.393 0.695
RACE_FAsian -0.7044 0.4944 0.5045 -1.396 0.163
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack 2.2972 0.4353 1.7116 3.083
RACE_FOther/Unk 0.8602 1.1626 0.4056 1.824
RACE_FAsian 0.4944 2.0226 0.1839 1.329
Concordance= 0.564 (se = 0.011 )
Rsquare= 0.025 (max possible= 0.964 )
Likelihood ratio test= 29.67 on 3 df, p=1.622e-06
Wald test = 34.24 on 3 df, p=1.765e-07
Score (logrank) test = 36.52 on 3 df, p=5.826e-08
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RACE_F



Hispanic
uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n events median 0.95LCL 0.95UCL
HISPANIC=No 1058 267 NA NA NA
HISPANIC=Yes 65 15 NA 100 NA
HISPANIC=Unknown 57 18 NA 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
HISPANIC=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 863 100 0.902 0.00935 0.883 0.920
24 741 45 0.852 0.01136 0.830 0.875
36 638 25 0.822 0.01245 0.798 0.847
48 552 19 0.797 0.01340 0.771 0.823
60 461 22 0.763 0.01466 0.734 0.792
120 111 50 0.633 0.02180 0.591 0.677
HISPANIC=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 56 3 0.952 0.0270 0.901 1.000
24 41 7 0.826 0.0503 0.733 0.931
36 33 3 0.760 0.0591 0.652 0.885
48 30 0 0.760 0.0591 0.652 0.885
60 26 0 0.760 0.0591 0.652 0.885
120 5 2 0.622 0.1007 0.452 0.854
HISPANIC=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 51 3 0.946 0.0301 0.889 1.000
24 40 10 0.761 0.0579 0.655 0.883
36 35 0 0.761 0.0579 0.655 0.883
48 32 1 0.739 0.0602 0.630 0.867
60 27 1 0.715 0.0628 0.602 0.850
120 8 2 0.657 0.0700 0.533 0.809
## Univariable Cox Proportional Hazard Model for: HISPANIC
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
HISPANICYes -0.01538 0.98474 0.26541 -0.058 0.954
HISPANICUnknown 0.16582 1.18036 0.24356 0.681 0.496
exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes 0.9847 1.0155 0.5853 1.657
HISPANICUnknown 1.1804 0.8472 0.7323 1.903
Concordance= 0.505 (se = 0.009 )
Rsquare= 0 (max possible= 0.964 )
Likelihood ratio test= 0.45 on 2 df, p=0.7982
Wald test = 0.47 on 2 df, p=0.7894
Score (logrank) test = 0.47 on 2 df, p=0.789
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: HISPANIC



Insurance Status
uni_var(test_var = "INSURANCE_F", data_imp = data)
_________________________________________________
## INSURANCE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n events median 0.95LCL 0.95UCL
INSURANCE_F=Private 614 79 NA NA NA
INSURANCE_F=None 30 11 NA 22.6 NA
INSURANCE_F=Medicaid 62 16 NA NA NA
INSURANCE_F=Medicare 429 188 82.6 69.2 106
INSURANCE_F=Other Government 17 1 NA NA NA
INSURANCE_F=Unknown 28 5 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
INSURANCE_F=Private
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 533 24 0.959 0.00824 0.943 0.975
24 456 19 0.923 0.01131 0.901 0.945
36 413 5 0.913 0.01210 0.889 0.937
48 361 7 0.896 0.01337 0.870 0.923
60 307 6 0.881 0.01458 0.853 0.910
120 84 16 0.807 0.02278 0.763 0.853
INSURANCE_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 20 5 0.818 0.0740 0.685 0.977
24 13 4 0.643 0.0974 0.478 0.866
36 11 1 0.594 0.1017 0.425 0.831
48 11 0 0.594 0.1017 0.425 0.831
60 7 1 0.528 0.1098 0.351 0.794
INSURANCE_F=Medicaid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 51 8 0.868 0.0435 0.787 0.958
24 45 5 0.782 0.0535 0.684 0.895
36 35 2 0.745 0.0572 0.641 0.866
48 31 0 0.745 0.0572 0.641 0.866
60 28 0 0.745 0.0572 0.641 0.866
120 6 1 0.709 0.0645 0.594 0.848
INSURANCE_F=Medicare
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 330 65 0.844 0.0178 0.809 0.879
24 274 34 0.753 0.0216 0.712 0.797
36 219 20 0.695 0.0236 0.650 0.743
48 186 13 0.652 0.0250 0.604 0.702
60 151 15 0.595 0.0268 0.545 0.650
120 29 36 0.373 0.0369 0.308 0.453
INSURANCE_F=Other Government
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.000 1.000 1
24 14 0 1.000 0.000 1.000 1
36 10 0 1.000 0.000 1.000 1
48 9 0 1.000 0.000 1.000 1
60 7 1 0.889 0.105 0.706 1
120 1 0 0.889 0.105 0.706 1
INSURANCE_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 4 0.857 0.0661 0.737 0.997
24 20 0 0.857 0.0661 0.737 0.997
36 18 0 0.857 0.0661 0.737 0.997
48 16 0 0.857 0.0661 0.737 0.997
60 14 0 0.857 0.0661 0.737 0.997
120 4 1 0.791 0.0880 0.636 0.984
## Univariable Cox Proportional Hazard Model for: INSURANCE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
INSURANCE_FNone 1.5336 4.6349 0.3228 4.751 2.03e-06 ***
INSURANCE_FMedicaid 0.7588 2.1356 0.2742 2.767 0.00565 **
INSURANCE_FMedicare 1.4409 4.2247 0.1344 10.718 < 2e-16 ***
INSURANCE_FOther Government -0.6499 0.5221 1.0065 -0.646 0.51849
INSURANCE_FUnknown 0.3298 1.3907 0.4612 0.715 0.47454
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
INSURANCE_FNone 4.6349 0.2158 2.46182 8.726
INSURANCE_FMedicaid 2.1356 0.4682 1.24777 3.655
INSURANCE_FMedicare 4.2247 0.2367 3.24608 5.498
INSURANCE_FOther Government 0.5221 1.9153 0.07262 3.754
INSURANCE_FUnknown 1.3907 0.7191 0.56320 3.434
Concordance= 0.67 (se = 0.016 )
Rsquare= 0.111 (max possible= 0.964 )
Likelihood ratio test= 138.7 on 5 df, p=0
Wald test = 123.7 on 5 df, p=0
Score (logrank) test = 145.7 on 5 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: INSURANCE_F



Overall Survival pre/post-ACA expansion
uni_var(test_var = "EXPN_GROUP", data_imp = no_Excludes)
_________________________________________________
## EXPN_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n events median 0.95LCL 0.95UCL
EXPN_GROUP=Post-Expansion 248 36 NA 82.8 NA
EXPN_GROUP=Pre-Expansion 1137 303 142 128.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
EXPN_GROUP=Post-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 206 8 0.965 0.0121 0.942 0.989
24 144 16 0.882 0.0229 0.838 0.928
36 79 6 0.838 0.0280 0.785 0.894
48 52 3 0.797 0.0351 0.731 0.869
60 33 1 0.780 0.0384 0.708 0.859
EXPN_GROUP=Pre-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1000 41 0.962 0.00580 0.951 0.974
24 900 41 0.921 0.00835 0.905 0.938
36 799 34 0.885 0.01009 0.865 0.905
48 683 33 0.846 0.01167 0.824 0.870
60 568 44 0.789 0.01376 0.762 0.816
120 125 94 0.586 0.02213 0.545 0.631
## Univariable Cox Proportional Hazard Model for: EXPN_GROUP
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n= 1385, number of events= 339
coef exp(coef) se(coef) z Pr(>|z|)
EXPN_GROUPPre-Expansion -0.2137 0.8076 0.1815 -1.178 0.239
exp(coef) exp(-coef) lower .95 upper .95
EXPN_GROUPPre-Expansion 0.8076 1.238 0.5659 1.153
Concordance= 0.514 (se = 0.01 )
Rsquare= 0.001 (max possible= 0.958 )
Likelihood ratio test= 1.32 on 1 df, p=0.2507
Wald test = 1.39 on 1 df, p=0.239
Score (logrank) test = 1.39 on 1 df, p=0.2381
## Unadjusted Kaplan Meier Overall Survival Curve for: EXPN_GROUP



Education
uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
10 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more 152 52 NA 93.3 NA
EDUCATION_F=13 - 20.9% 266 74 140 130.6 NA
EDUCATION_F=7 - 12.9% 433 108 NA 127.9 NA
EDUCATION_F=Less than 7% 319 65 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
10 observations deleted due to missingness
EDUCATION_F=21% or more
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 123 18 0.879 0.0267 0.828 0.933
24 99 13 0.783 0.0347 0.717 0.854
36 86 7 0.726 0.0382 0.655 0.805
48 78 0 0.726 0.0382 0.655 0.805
60 68 3 0.697 0.0402 0.623 0.781
120 12 11 0.523 0.0586 0.420 0.652
EDUCATION_F=13 - 20.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 214 26 0.897 0.0192 0.860 0.935
24 190 9 0.857 0.0224 0.814 0.902
36 162 9 0.814 0.0254 0.766 0.866
48 139 6 0.782 0.0276 0.730 0.838
60 116 7 0.741 0.0303 0.684 0.803
120 34 14 0.606 0.0428 0.527 0.695
EDUCATION_F=7 - 12.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 355 38 0.909 0.0141 0.882 0.937
24 300 25 0.842 0.0183 0.807 0.879
36 259 4 0.830 0.0190 0.794 0.868
48 221 11 0.793 0.0212 0.752 0.836
60 189 8 0.762 0.0230 0.718 0.809
120 46 19 0.641 0.0335 0.578 0.710
EDUCATION_F=Less than 7%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 273 23 0.926 0.0149 0.897 0.955
24 229 15 0.872 0.0194 0.835 0.911
36 195 8 0.841 0.0217 0.799 0.884
48 172 3 0.827 0.0228 0.783 0.873
60 138 5 0.800 0.0250 0.753 0.851
120 30 10 0.703 0.0384 0.631 0.782
## Univariable Cox Proportional Hazard Model for: EDUCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
n= 1170, number of events= 299
(10 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
EDUCATION_F13 - 20.9% -0.2675 0.7653 0.1811 -1.477 0.13962
EDUCATION_F7 - 12.9% -0.3522 0.7031 0.1689 -2.086 0.03699 *
EDUCATION_FLess than 7% -0.5622 0.5700 0.1861 -3.021 0.00252 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9% 0.7653 1.307 0.5367 1.0914
EDUCATION_F7 - 12.9% 0.7031 1.422 0.5050 0.9790
EDUCATION_FLess than 7% 0.5700 1.755 0.3958 0.8208
Concordance= 0.545 (se = 0.017 )
Rsquare= 0.008 (max possible= 0.965 )
Likelihood ratio test= 9.21 on 3 df, p=0.02658
Wald test = 9.44 on 3 df, p=0.02392
Score (logrank) test = 9.58 on 3 df, p=0.02246
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: EDUCATION_F



Urban/Rural
uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
34 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
U_R_F=Metro 980 248 NA NA NA
U_R_F=Urban 153 41 NA 140.2 NA
U_R_F=Rural 13 4 118 41.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
34 observations deleted due to missingness
U_R_F=Metro
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 809 87 0.908 0.00942 0.890 0.927
24 684 54 0.845 0.01207 0.821 0.869
36 589 21 0.818 0.01306 0.792 0.844
48 508 19 0.790 0.01410 0.762 0.818
60 422 17 0.761 0.01520 0.732 0.791
120 98 45 0.630 0.02287 0.587 0.677
U_R_F=Urban
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 127 14 0.907 0.0238 0.861 0.954
24 109 7 0.854 0.0295 0.798 0.914
36 92 6 0.805 0.0340 0.741 0.875
48 84 0 0.805 0.0340 0.741 0.875
60 72 5 0.756 0.0383 0.685 0.835
120 22 7 0.658 0.0486 0.570 0.761
U_R_F=Rural
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.754 1
24 9 1 0.818 0.1163 0.619 1
36 8 0 0.818 0.1163 0.619 1
48 6 1 0.716 0.1397 0.488 1
60 6 0 0.716 0.1397 0.488 1
120 2 1 0.477 0.2159 0.197 1
## Univariable Cox Proportional Hazard Model for: U_R_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
n= 1146, number of events= 293
(34 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
U_R_FUrban -0.005283 0.994731 0.168739 -0.031 0.975
U_R_FRural 0.138247 1.148259 0.504159 0.274 0.784
exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban 0.9947 1.0053 0.7146 1.385
U_R_FRural 1.1483 0.8709 0.4275 3.084
Concordance= 0.5 (se = 0.011 )
Rsquare= 0 (max possible= 0.964 )
Likelihood ratio test= 0.07 on 2 df, p=0.9637
Wald test = 0.08 on 2 df, p=0.9621
Score (logrank) test = 0.08 on 2 df, p=0.9621
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: U_R_F



Year
uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004 97 36 NA 110.5 NA
YEAR_OF_DIAGNOSIS=2005 94 35 140.2 117.9 NA
YEAR_OF_DIAGNOSIS=2006 92 26 NA NA NA
YEAR_OF_DIAGNOSIS=2007 109 31 NA NA NA
YEAR_OF_DIAGNOSIS=2008 101 19 NA NA NA
YEAR_OF_DIAGNOSIS=2009 120 38 NA NA NA
YEAR_OF_DIAGNOSIS=2010 119 31 93.9 91.7 NA
YEAR_OF_DIAGNOSIS=2011 90 21 NA NA NA
YEAR_OF_DIAGNOSIS=2012 86 23 NA NA NA
YEAR_OF_DIAGNOSIS=2013 87 17 NA NA NA
YEAR_OF_DIAGNOSIS=2014 87 13 NA NA NA
YEAR_OF_DIAGNOSIS=2015 98 10 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
YEAR_OF_DIAGNOSIS=2004
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 82 6 0.934 0.0260 0.885 0.987
24 70 7 0.852 0.0379 0.781 0.930
36 66 4 0.804 0.0428 0.724 0.892
48 63 2 0.779 0.0449 0.696 0.872
60 60 3 0.742 0.0476 0.655 0.842
120 40 12 0.588 0.0548 0.490 0.706
YEAR_OF_DIAGNOSIS=2005
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 77 9 0.901 0.0315 0.841 0.964
24 70 7 0.819 0.0411 0.742 0.903
36 68 2 0.795 0.0431 0.715 0.884
48 66 0 0.795 0.0431 0.715 0.884
60 62 2 0.770 0.0452 0.687 0.864
120 33 12 0.588 0.0578 0.485 0.713
YEAR_OF_DIAGNOSIS=2006
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 78 9 0.900 0.0318 0.839 0.964
24 68 5 0.840 0.0392 0.767 0.921
36 65 2 0.816 0.0418 0.738 0.902
48 63 2 0.791 0.0441 0.709 0.882
60 62 0 0.791 0.0441 0.709 0.882
120 39 6 0.704 0.0515 0.610 0.813
YEAR_OF_DIAGNOSIS=2007
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 83 17 0.838 0.0361 0.770 0.912
24 76 4 0.797 0.0397 0.723 0.879
36 74 1 0.787 0.0405 0.711 0.870
48 70 2 0.765 0.0422 0.686 0.852
60 63 2 0.743 0.0438 0.662 0.834
120 12 5 0.679 0.0484 0.591 0.781
YEAR_OF_DIAGNOSIS=2008
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 82 6 0.939 0.0242 0.892 0.988
24 75 3 0.903 0.0308 0.845 0.966
36 68 4 0.855 0.0375 0.785 0.932
48 66 0 0.855 0.0375 0.785 0.932
60 60 1 0.842 0.0391 0.768 0.922
YEAR_OF_DIAGNOSIS=2009
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 109 8 0.933 0.0230 0.889 0.979
24 97 9 0.854 0.0327 0.793 0.921
36 90 3 0.827 0.0352 0.761 0.899
48 85 5 0.781 0.0388 0.709 0.861
60 77 4 0.743 0.0413 0.667 0.829
YEAR_OF_DIAGNOSIS=2010
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 104 11 0.905 0.0272 0.854 0.960
24 94 5 0.860 0.0325 0.799 0.926
36 86 4 0.822 0.0361 0.755 0.896
48 77 3 0.792 0.0387 0.720 0.872
60 68 3 0.760 0.0414 0.683 0.846
YEAR_OF_DIAGNOSIS=2011
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 77 7 0.919 0.0295 0.863 0.978
24 70 5 0.858 0.0381 0.786 0.936
36 66 2 0.833 0.0408 0.757 0.917
48 61 2 0.807 0.0436 0.726 0.897
60 47 5 0.736 0.0500 0.644 0.841
YEAR_OF_DIAGNOSIS=2012
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 66 11 0.865 0.0380 0.793 0.943
24 54 5 0.794 0.0462 0.708 0.890
36 46 3 0.749 0.0504 0.657 0.855
48 38 1 0.732 0.0521 0.636 0.841
60 15 3 0.635 0.0699 0.511 0.787
YEAR_OF_DIAGNOSIS=2013
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 74 5 0.940 0.0259 0.891 0.993
24 61 7 0.846 0.0411 0.769 0.931
36 55 2 0.818 0.0442 0.736 0.910
48 25 3 0.765 0.0511 0.671 0.872
YEAR_OF_DIAGNOSIS=2014
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 64 10 0.881 0.0354 0.814 0.953
24 51 2 0.850 0.0403 0.775 0.933
36 22 1 0.834 0.0428 0.754 0.922
YEAR_OF_DIAGNOSIS=2015
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 74 7 0.924 0.0278 0.871 0.980
24 36 3 0.880 0.0364 0.811 0.954
## Univariable Cox Proportional Hazard Model for: YEAR_OF_DIAGNOSIS
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
YEAR_OF_DIAGNOSIS2005 0.02289 1.02315 0.23779 0.096 0.923
YEAR_OF_DIAGNOSIS2006 -0.28353 0.75312 0.25847 -1.097 0.273
YEAR_OF_DIAGNOSIS2007 -0.07593 0.92688 0.24813 -0.306 0.760
YEAR_OF_DIAGNOSIS2008 -0.49876 0.60728 0.28678 -1.739 0.082 .
YEAR_OF_DIAGNOSIS2009 0.02013 1.02033 0.23765 0.085 0.933
YEAR_OF_DIAGNOSIS2010 -0.07015 0.93225 0.25092 -0.280 0.780
YEAR_OF_DIAGNOSIS2011 -0.09366 0.91059 0.28067 -0.334 0.739
YEAR_OF_DIAGNOSIS2012 0.28652 1.33178 0.27426 1.045 0.296
YEAR_OF_DIAGNOSIS2013 -0.03997 0.96082 0.30182 -0.132 0.895
YEAR_OF_DIAGNOSIS2014 -0.10668 0.89881 0.33150 -0.322 0.748
YEAR_OF_DIAGNOSIS2015 -0.36531 0.69398 0.36561 -0.999 0.318
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005 1.0232 0.9774 0.6420 1.631
YEAR_OF_DIAGNOSIS2006 0.7531 1.3278 0.4538 1.250
YEAR_OF_DIAGNOSIS2007 0.9269 1.0789 0.5699 1.507
YEAR_OF_DIAGNOSIS2008 0.6073 1.6467 0.3462 1.065
YEAR_OF_DIAGNOSIS2009 1.0203 0.9801 0.6404 1.626
YEAR_OF_DIAGNOSIS2010 0.9323 1.0727 0.5701 1.524
YEAR_OF_DIAGNOSIS2011 0.9106 1.0982 0.5253 1.578
YEAR_OF_DIAGNOSIS2012 1.3318 0.7509 0.7780 2.280
YEAR_OF_DIAGNOSIS2013 0.9608 1.0408 0.5318 1.736
YEAR_OF_DIAGNOSIS2014 0.8988 1.1126 0.4693 1.721
YEAR_OF_DIAGNOSIS2015 0.6940 1.4410 0.3390 1.421
Concordance= 0.536 (se = 0.018 )
Rsquare= 0.008 (max possible= 0.964 )
Likelihood ratio test= 9.56 on 11 df, p=0.5705
Wald test = 9.24 on 11 df, p=0.6002
Score (logrank) test = 9.4 on 11 df, p=0.5849
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: YEAR_OF_DIAGNOSIS
This manual palette can handle a maximum of 10 values. You have supplied 12.



Primary Site
uni_var(test_var = "SITE_TEXT", data_imp = data)
_________________________________________________
## SITE_TEXT
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n events median 0.95LCL 0.95UCL
SITE_TEXT=C44.0 Skin of lip, NOS 11 2 NA 49.1 NA
SITE_TEXT=C44.1 Eyelid 5 0 NA NA NA
SITE_TEXT=C44.2 External ear 11 1 NA NA NA
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 113 20 NA NA NA
SITE_TEXT=C44.4 Skin of scalp and neck 66 14 NA 98.3 NA
SITE_TEXT=C44.5 Skin of trunk 217 61 NA 117.9 NA
SITE_TEXT=C44.6 Skin of upper limb and shoulder 199 40 NA 135.6 NA
SITE_TEXT=C44.7 Skin of lower limb and hip 207 59 NA 105.6 NA
SITE_TEXT=C44.8 Overlapping lesion of skin 52 20 NA 41.4 NA
SITE_TEXT=C44.9 Skin, NOS 290 81 NA 127.3 NA
SITE_TEXT=C51.9 Vulva, NOS 3 1 NA 84.5 NA
SITE_TEXT=C52.9 Vagina, NOS 1 1 60.8 NA NA
SITE_TEXT=C60.0 Prepuce 2 0 NA NA NA
SITE_TEXT=C60.9 Penis 3 0 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
SITE_TEXT=C44.0 Skin of lip, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 0 1.000 0.000 1.000 1
24 8 0 1.000 0.000 1.000 1
36 6 1 0.857 0.132 0.633 1
48 6 0 0.857 0.132 0.633 1
60 3 1 0.686 0.186 0.403 1
120 2 0 0.686 0.186 0.403 1
SITE_TEXT=C44.1 Eyelid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 0 1 0 1 1
24 5 0 1 0 1 1
36 5 0 1 0 1 1
48 5 0 1 0 1 1
60 5 0 1 0 1 1
120 3 0 1 0 1 1
SITE_TEXT=C44.2 External ear
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 1 0.909 0.0867 0.754 1
24 8 0 0.909 0.0867 0.754 1
36 6 0 0.909 0.0867 0.754 1
48 6 0 0.909 0.0867 0.754 1
60 4 0 0.909 0.0867 0.754 1
120 2 0 0.909 0.0867 0.754 1
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 96 4 0.963 0.0181 0.928 0.999
24 81 4 0.920 0.0274 0.867 0.975
36 74 1 0.908 0.0295 0.852 0.968
48 59 4 0.856 0.0376 0.785 0.933
60 50 4 0.793 0.0461 0.708 0.889
120 13 2 0.742 0.0563 0.640 0.861
SITE_TEXT=C44.4 Skin of scalp and neck
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 54 6 0.906 0.0366 0.837 0.981
24 46 2 0.872 0.0425 0.792 0.959
36 37 1 0.852 0.0457 0.767 0.947
48 33 0 0.852 0.0457 0.767 0.947
60 29 1 0.825 0.0519 0.729 0.933
120 6 4 0.640 0.0964 0.476 0.860
SITE_TEXT=C44.5 Skin of trunk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 176 22 0.894 0.0215 0.853 0.937
24 154 7 0.856 0.0248 0.809 0.906
36 138 6 0.822 0.0275 0.770 0.878
48 126 4 0.797 0.0293 0.742 0.857
60 105 7 0.752 0.0322 0.692 0.818
120 22 15 0.581 0.0491 0.493 0.686
SITE_TEXT=C44.6 Skin of upper limb and shoulder
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 173 10 0.948 0.0160 0.917 0.980
24 149 8 0.902 0.0221 0.860 0.946
36 126 4 0.876 0.0249 0.828 0.926
48 110 4 0.846 0.0282 0.792 0.903
60 98 1 0.838 0.0292 0.782 0.897
120 25 9 0.729 0.0436 0.649 0.820
SITE_TEXT=C44.7 Skin of lower limb and hip
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 171 19 0.905 0.0207 0.866 0.947
24 140 17 0.811 0.0285 0.758 0.869
36 119 6 0.775 0.0308 0.717 0.838
48 98 4 0.746 0.0329 0.685 0.814
60 76 3 0.719 0.0352 0.654 0.792
120 16 9 0.560 0.0575 0.458 0.685
SITE_TEXT=C44.8 Overlapping lesion of skin
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 40 8 0.840 0.0519 0.744 0.948
24 28 8 0.670 0.0679 0.549 0.817
36 24 1 0.643 0.0703 0.519 0.797
48 20 1 0.616 0.0723 0.490 0.776
60 18 1 0.586 0.0749 0.456 0.753
120 4 1 0.537 0.0831 0.396 0.727
SITE_TEXT=C44.9 Skin, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 229 36 0.871 0.0201 0.833 0.911
24 196 16 0.808 0.0240 0.762 0.857
36 164 8 0.774 0.0259 0.724 0.826
48 144 3 0.759 0.0268 0.708 0.813
60 120 5 0.731 0.0286 0.677 0.789
120 31 12 0.612 0.0415 0.536 0.699
SITE_TEXT=C51.9 Vulva, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1 0 1 1
24 3 0 1 0 1 1
36 3 0 1 0 1 1
48 3 0 1 0 1 1
60 3 0 1 0 1 1
SITE_TEXT=C52.9 Vagina, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
SITE_TEXT=C60.0 Prepuce
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 1 0 1 0 1 1
SITE_TEXT=C60.9 Penis
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: SITE_TEXT
Loglik converged before variable 1,12,13 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
SITE_TEXTC44.1 Eyelid -1.471e+01 4.087e-07 1.224e+03 -0.012 0.990
SITE_TEXTC44.2 External ear -6.886e-01 5.023e-01 1.225e+00 -0.562 0.574
SITE_TEXTC44.3 Skin of ear and unspecified parts of face -4.419e-02 9.568e-01 7.417e-01 -0.060 0.952
SITE_TEXTC44.4 Skin of scalp and neck 1.998e-01 1.221e+00 7.561e-01 0.264 0.792
SITE_TEXTC44.5 Skin of trunk 4.298e-01 1.537e+00 7.188e-01 0.598 0.550
SITE_TEXTC44.6 Skin of upper limb and shoulder 4.494e-02 1.046e+00 7.247e-01 0.062 0.951
SITE_TEXTC44.7 Skin of lower limb and hip 5.264e-01 1.693e+00 7.191e-01 0.732 0.464
SITE_TEXTC44.8 Overlapping lesion of skin 9.256e-01 2.523e+00 7.418e-01 1.248 0.212
SITE_TEXTC44.9 Skin, NOS 4.618e-01 1.587e+00 7.159e-01 0.645 0.519
SITE_TEXTC51.9 Vulva, NOS 1.939e-01 1.214e+00 1.225e+00 0.158 0.874
SITE_TEXTC52.9 Vagina, NOS 1.632e+00 5.114e+00 1.225e+00 1.332 0.183
SITE_TEXTC60.0 Prepuce -1.470e+01 4.124e-07 2.538e+03 -0.006 0.995
SITE_TEXTC60.9 Penis -1.470e+01 4.131e-07 2.524e+03 -0.006 0.995
exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXTC44.1 Eyelid 4.087e-07 2.447e+06 0.00000 Inf
SITE_TEXTC44.2 External ear 5.023e-01 1.991e+00 0.04554 5.539
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 9.568e-01 1.045e+00 0.22358 4.094
SITE_TEXTC44.4 Skin of scalp and neck 1.221e+00 8.189e-01 0.27748 5.375
SITE_TEXTC44.5 Skin of trunk 1.537e+00 6.506e-01 0.37570 6.288
SITE_TEXTC44.6 Skin of upper limb and shoulder 1.046e+00 9.561e-01 0.25273 4.329
SITE_TEXTC44.7 Skin of lower limb and hip 1.693e+00 5.907e-01 0.41349 6.930
SITE_TEXTC44.8 Overlapping lesion of skin 2.523e+00 3.963e-01 0.58959 10.799
SITE_TEXTC44.9 Skin, NOS 1.587e+00 6.301e-01 0.39008 6.456
SITE_TEXTC51.9 Vulva, NOS 1.214e+00 8.237e-01 0.10997 13.402
SITE_TEXTC52.9 Vagina, NOS 5.114e+00 1.955e-01 0.46322 56.467
SITE_TEXTC60.0 Prepuce 4.124e-07 2.425e+06 0.00000 Inf
SITE_TEXTC60.9 Penis 4.131e-07 2.421e+06 0.00000 Inf
Concordance= 0.582 (se = 0.018 )
Rsquare= 0.022 (max possible= 0.964 )
Likelihood ratio test= 26.34 on 13 df, p=0.01529
Wald test = 19.39 on 13 df, p=0.1114
Score (logrank) test = 23.94 on 13 df, p=0.03166
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SITE_TEXT
This manual palette can handle a maximum of 10 values. You have supplied 14.



Histology
#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)
Grade
#uni_var(test_var = "GRADE_F", data_imp = data)
Clinical T Stage
uni_var(test_var = "TNM_CLIN_T", data_imp = data)
_________________________________________________
## TNM_CLIN_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_T, data = data)
18 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_CLIN_T=N_A 1161 293 NA NA NA
TNM_CLIN_T=cX 1 0 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_T, data = data)
18 observations deleted due to missingness
TNM_CLIN_T=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 955 103 0.908 0.00868 0.891 0.925
24 809 60 0.848 0.01101 0.827 0.870
36 696 27 0.818 0.01201 0.795 0.842
48 604 20 0.794 0.01287 0.769 0.819
60 506 22 0.763 0.01396 0.736 0.791
120 124 54 0.636 0.02059 0.596 0.677
TNM_CLIN_T=cX
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_T
Loglik converged before variable 1 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_T, data = data)
n= 1162, number of events= 293
(18 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_TcX -1.300e+01 2.256e-06 1.223e+03 -0.011 0.992
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_TcX 2.256e-06 443332 0 Inf
Concordance= 0.501 (se = 0.001 )
Rsquare= 0.001 (max possible= 0.963 )
Likelihood ratio test= 0.59 on 1 df, p=0.4416
Wald test = 0 on 1 df, p=0.9915
Score (logrank) test = 0.3 on 1 df, p=0.5862
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_T



Clinical N Stage
uni_var(test_var = "TNM_CLIN_N", data_imp = data)
_________________________________________________
## TNM_CLIN_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_N, data = data)
18 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_CLIN_N=N_A 1161 293 NA NA NA
TNM_CLIN_N=cX 1 0 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_N, data = data)
18 observations deleted due to missingness
TNM_CLIN_N=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 955 103 0.908 0.00868 0.891 0.925
24 809 60 0.848 0.01101 0.827 0.870
36 696 27 0.818 0.01201 0.795 0.842
48 604 20 0.794 0.01287 0.769 0.819
60 506 22 0.763 0.01396 0.736 0.791
120 124 54 0.636 0.02059 0.596 0.677
TNM_CLIN_N=cX
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_N
Loglik converged before variable 1 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_N, data = data)
n= 1162, number of events= 293
(18 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_NcX -1.300e+01 2.256e-06 1.223e+03 -0.011 0.992
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_NcX 2.256e-06 443332 0 Inf
Concordance= 0.501 (se = 0.001 )
Rsquare= 0.001 (max possible= 0.963 )
Likelihood ratio test= 0.59 on 1 df, p=0.4416
Wald test = 0 on 1 df, p=0.9915
Score (logrank) test = 0.3 on 1 df, p=0.5862
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_N



Clinical Stage Group
uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
1 observation deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=1 340 63 NA NA NA
TNM_CLIN_STAGE_GROUP=1A 394 67 NA 140.22 NA
TNM_CLIN_STAGE_GROUP=1B 14 4 NA 24.71 NA
TNM_CLIN_STAGE_GROUP=2 24 7 NA 51.35 NA
TNM_CLIN_STAGE_GROUP=2A 32 9 NA 53.36 NA
TNM_CLIN_STAGE_GROUP=2B 12 6 63.9 26.05 NA
TNM_CLIN_STAGE_GROUP=3 11 4 74.1 42.18 NA
TNM_CLIN_STAGE_GROUP=3A 8 1 NA NA NA
TNM_CLIN_STAGE_GROUP=3B 3 0 NA NA NA
TNM_CLIN_STAGE_GROUP=4 56 39 24.1 14.23 76.7
TNM_CLIN_STAGE_GROUP=4A 38 22 30.3 14.32 NA
TNM_CLIN_STAGE_GROUP=4B 18 13 12.3 9.23 NA
TNM_CLIN_STAGE_GROUP=N_A 2 0 NA NA NA
TNM_CLIN_STAGE_GROUP=99 227 65 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
1 observation deleted due to missingness
TNM_CLIN_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 291 19 0.943 0.0127 0.918 0.968
24 256 14 0.895 0.0173 0.862 0.930
36 226 5 0.877 0.0188 0.841 0.915
48 210 4 0.861 0.0201 0.823 0.901
60 178 3 0.848 0.0212 0.807 0.890
120 43 15 0.741 0.0326 0.680 0.808
TNM_CLIN_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 340 16 0.957 0.0105 0.937 0.978
24 295 9 0.931 0.0134 0.905 0.957
36 254 5 0.914 0.0151 0.885 0.944
48 202 7 0.887 0.0177 0.853 0.923
60 162 12 0.831 0.0228 0.788 0.877
120 33 14 0.711 0.0382 0.640 0.790
TNM_CLIN_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 2 0.857 0.0935 0.692 1
24 8 1 0.771 0.1170 0.573 1
36 5 1 0.675 0.1365 0.454 1
48 4 0 0.675 0.1365 0.454 1
60 4 0 0.675 0.1365 0.454 1
120 2 0 0.675 0.1365 0.454 1
TNM_CLIN_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 19 2 0.910 0.0607 0.799 1.000
24 15 2 0.809 0.0868 0.655 0.998
36 12 1 0.751 0.0980 0.581 0.970
48 10 1 0.688 0.1080 0.506 0.936
60 9 1 0.619 0.1171 0.428 0.897
120 1 0 0.619 0.1171 0.428 0.897
TNM_CLIN_STAGE_GROUP=2A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 26 4 0.870 0.0609 0.758 0.998
24 21 3 0.763 0.0785 0.624 0.934
36 17 0 0.763 0.0785 0.624 0.934
48 14 0 0.763 0.0785 0.624 0.934
60 11 2 0.646 0.1013 0.475 0.878
120 2 0 0.646 0.1013 0.475 0.878
TNM_CLIN_STAGE_GROUP=2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 1 0.917 0.0798 0.773 1.000
24 9 2 0.750 0.1250 0.541 1.000
36 5 2 0.547 0.1537 0.315 0.949
48 4 0 0.547 0.1537 0.315 0.949
60 3 0 0.547 0.1537 0.315 0.949
TNM_CLIN_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 0 1.000 0.000 1.000 1
24 6 2 0.787 0.134 0.564 1
36 6 0 0.787 0.134 0.564 1
48 5 1 0.656 0.164 0.402 1
60 5 0 0.656 0.164 0.402 1
TNM_CLIN_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 0 1.000 0.000 1.000 1
24 7 0 1.000 0.000 1.000 1
36 5 1 0.833 0.152 0.583 1
48 4 0 0.833 0.152 0.583 1
60 4 0 0.833 0.152 0.583 1
120 2 0 0.833 0.152 0.583 1
TNM_CLIN_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 34 20 0.638 0.0648 0.5231 0.779
24 25 7 0.503 0.0684 0.3849 0.656
36 17 4 0.419 0.0687 0.3034 0.577
48 16 0 0.419 0.0687 0.3034 0.577
60 14 1 0.391 0.0696 0.2755 0.554
120 2 7 0.130 0.0695 0.0455 0.371
TNM_CLIN_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 10 0.731 0.0730 0.601 0.889
24 16 5 0.583 0.0829 0.441 0.771
36 12 3 0.471 0.0888 0.325 0.682
48 10 1 0.428 0.0905 0.283 0.648
60 8 2 0.343 0.0904 0.204 0.575
120 3 1 0.300 0.0887 0.168 0.535
TNM_CLIN_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 9 0.500 0.118 0.315 0.794
24 7 2 0.389 0.115 0.218 0.694
36 6 1 0.333 0.111 0.173 0.641
48 5 1 0.278 0.106 0.132 0.585
60 3 0 0.278 0.106 0.132 0.585
120 1 0 0.278 0.106 0.132 0.585
TNM_CLIN_STAGE_GROUP=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 182 23 0.893 0.0211 0.853 0.936
24 153 15 0.816 0.0270 0.765 0.871
36 137 5 0.789 0.0288 0.735 0.847
48 126 5 0.759 0.0306 0.702 0.822
60 111 2 0.746 0.0315 0.687 0.810
120 35 15 0.592 0.0454 0.510 0.689
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_STAGE_GROUP
Loglik converged before variable 8,12 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n= 1179, number of events= 300
(1 observation deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_STAGE_GROUP1A 1.632e-02 1.016e+00 1.758e-01 0.093 0.92604
TNM_CLIN_STAGE_GROUP1B 7.209e-01 2.056e+00 5.158e-01 1.398 0.16225
TNM_CLIN_STAGE_GROUP2 6.541e-01 1.924e+00 3.986e-01 1.641 0.10075
TNM_CLIN_STAGE_GROUP2A 6.312e-01 1.880e+00 3.566e-01 1.770 0.07675 .
TNM_CLIN_STAGE_GROUP2B 1.396e+00 4.038e+00 4.288e-01 3.255 0.00113 **
TNM_CLIN_STAGE_GROUP3 8.220e-01 2.275e+00 5.158e-01 1.593 0.11106
TNM_CLIN_STAGE_GROUP3A -4.375e-01 6.456e-01 1.008e+00 -0.434 0.66424
TNM_CLIN_STAGE_GROUP3B -1.420e+01 6.804e-07 2.234e+03 -0.006 0.99493
TNM_CLIN_STAGE_GROUP4 1.824e+00 6.197e+00 2.046e-01 8.915 < 2e-16 ***
TNM_CLIN_STAGE_GROUP4A 1.613e+00 5.020e+00 2.486e-01 6.490 8.57e-11 ***
TNM_CLIN_STAGE_GROUP4B 1.937e+00 6.936e+00 3.057e-01 6.336 2.36e-10 ***
TNM_CLIN_STAGE_GROUPN_A -1.422e+01 6.687e-07 1.944e+03 -0.007 0.99416
TNM_CLIN_STAGE_GROUP99 4.756e-01 1.609e+00 1.769e-01 2.689 0.00716 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1A 1.016e+00 9.838e-01 0.72019 1.435
TNM_CLIN_STAGE_GROUP1B 2.056e+00 4.863e-01 0.74818 5.651
TNM_CLIN_STAGE_GROUP2 1.924e+00 5.199e-01 0.88069 4.201
TNM_CLIN_STAGE_GROUP2A 1.880e+00 5.320e-01 0.93445 3.782
TNM_CLIN_STAGE_GROUP2B 4.038e+00 2.476e-01 1.74266 9.358
TNM_CLIN_STAGE_GROUP3 2.275e+00 4.396e-01 0.82773 6.253
TNM_CLIN_STAGE_GROUP3A 6.456e-01 1.549e+00 0.08954 4.656
TNM_CLIN_STAGE_GROUP3B 6.804e-07 1.470e+06 0.00000 Inf
TNM_CLIN_STAGE_GROUP4 6.197e+00 1.614e-01 4.14953 9.254
TNM_CLIN_STAGE_GROUP4A 5.020e+00 1.992e-01 3.08383 8.171
TNM_CLIN_STAGE_GROUP4B 6.936e+00 1.442e-01 3.80993 12.627
TNM_CLIN_STAGE_GROUPN_A 6.687e-07 1.495e+06 0.00000 Inf
TNM_CLIN_STAGE_GROUP99 1.609e+00 6.215e-01 1.13766 2.276
Concordance= 0.663 (se = 0.017 )
Rsquare= 0.101 (max possible= 0.964 )
Likelihood ratio test= 125.3 on 13 df, p=0
Wald test = 153.4 on 13 df, p=0
Score (logrank) test = 191.2 on 13 df, p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 14 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 14.



Pathologic T Stage
uni_var(test_var = "TNM_PATH_T", data_imp = data)
_________________________________________________
## TNM_PATH_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_T, data = data)
39 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
1141 289 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_T, data = data)
39 observations deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 939 101 0.908 0.00875 0.891 0.925
24 799 59 0.848 0.01110 0.827 0.870
36 689 27 0.818 0.01211 0.795 0.842
48 599 20 0.793 0.01298 0.768 0.819
60 505 21 0.764 0.01401 0.737 0.792
120 124 54 0.636 0.02063 0.597 0.678
## Univariable Cox Proportional Hazard Model for: TNM_PATH_T
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_T



Pathologic N Stage
uni_var(test_var = "TNM_PATH_N", data_imp = data)
_________________________________________________
## TNM_PATH_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_N, data = data)
39 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
1141 289 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_N, data = data)
39 observations deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 939 101 0.908 0.00875 0.891 0.925
24 799 59 0.848 0.01110 0.827 0.870
36 689 27 0.818 0.01211 0.795 0.842
48 599 20 0.793 0.01298 0.768 0.819
60 505 21 0.764 0.01401 0.737 0.792
120 124 54 0.636 0.02063 0.597 0.678
## Univariable Cox Proportional Hazard Model for: TNM_PATH_N
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_N



Pathologic M Stage
uni_var(test_var = "TNM_PATH_M", data_imp = data)
_________________________________________________
## TNM_PATH_M
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_M, data = data)
74 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
1106 287 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_M, data = data)
74 observations deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 912 99 0.907 0.00891 0.890 0.925
24 774 59 0.846 0.01134 0.824 0.868
36 671 27 0.815 0.01238 0.791 0.839
48 588 20 0.789 0.01324 0.764 0.816
60 494 21 0.759 0.01427 0.732 0.788
120 124 54 0.632 0.02071 0.593 0.674
## Univariable Cox Proportional Hazard Model for: TNM_PATH_M
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_M



Pathologic Stage Group
uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
87 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=1 116 27 NA 130.56 NA
TNM_PATH_STAGE_GROUP=1A 116 25 NA 127.31 NA
TNM_PATH_STAGE_GROUP=1B 9 3 NA 19.02 NA
TNM_PATH_STAGE_GROUP=2 12 3 NA 25.72 NA
TNM_PATH_STAGE_GROUP=2A 7 2 NA 53.36 NA
TNM_PATH_STAGE_GROUP=2B 4 1 NA 14.55 NA
TNM_PATH_STAGE_GROUP=3 6 2 NA 74.12 NA
TNM_PATH_STAGE_GROUP=3A 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=4 22 16 10.8 5.32 NA
TNM_PATH_STAGE_GROUP=4A 16 11 13.8 8.38 NA
TNM_PATH_STAGE_GROUP=4B 6 5 10.2 9.23 NA
TNM_PATH_STAGE_GROUP=N_A 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=99 777 188 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
87 observations deleted due to missingness
TNM_PATH_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 93 7 0.936 0.0234 0.891 0.983
24 82 5 0.884 0.0317 0.824 0.948
36 74 1 0.873 0.0331 0.810 0.940
48 71 2 0.849 0.0362 0.781 0.923
60 66 1 0.837 0.0376 0.767 0.914
120 18 9 0.687 0.0559 0.586 0.806
TNM_PATH_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 101 4 0.964 0.0178 0.929 0.999
24 88 5 0.914 0.0275 0.861 0.969
36 79 3 0.882 0.0322 0.821 0.947
48 65 3 0.846 0.0369 0.777 0.922
60 48 6 0.764 0.0462 0.678 0.860
120 13 3 0.687 0.0601 0.579 0.816
TNM_PATH_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 2 0.778 0.139 0.549 1
24 5 1 0.648 0.165 0.393 1
36 5 0 0.648 0.165 0.393 1
48 3 0 0.648 0.165 0.393 1
60 3 0 0.648 0.165 0.393 1
120 1 0 0.648 0.165 0.393 1
TNM_PATH_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.754 1
24 8 1 0.818 0.1163 0.619 1
36 6 1 0.716 0.1397 0.488 1
48 6 0 0.716 0.1397 0.488 1
60 6 0 0.716 0.1397 0.488 1
120 1 0 0.716 0.1397 0.488 1
TNM_PATH_STAGE_GROUP=2A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 1 0.857 0.132 0.633 1
24 6 0 0.857 0.132 0.633 1
36 6 0 0.857 0.132 0.633 1
48 5 0 0.857 0.132 0.633 1
60 4 1 0.686 0.186 0.403 1
120 1 0 0.686 0.186 0.403 1
TNM_PATH_STAGE_GROUP=2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1.00 0.000 1.000 1
24 3 1 0.75 0.217 0.426 1
36 3 0 0.75 0.217 0.426 1
48 2 0 0.75 0.217 0.426 1
60 1 0 0.75 0.217 0.426 1
TNM_PATH_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 0 1.0 0.000 1.000 1
24 5 0 1.0 0.000 1.000 1
36 4 1 0.8 0.179 0.516 1
48 4 0 0.8 0.179 0.516 1
60 4 0 0.8 0.179 0.516 1
TNM_PATH_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
TNM_PATH_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 12 0.455 0.1062 0.288 0.718
24 9 1 0.409 0.1048 0.248 0.676
36 6 2 0.318 0.0993 0.173 0.587
48 6 0 0.318 0.0993 0.173 0.587
60 5 0 0.318 0.0993 0.173 0.587
120 1 1 0.159 0.1230 0.035 0.724
TNM_PATH_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 5 0.666 0.123 0.4642 0.957
24 4 4 0.333 0.133 0.1525 0.728
36 3 1 0.250 0.123 0.0952 0.656
48 3 0 0.250 0.123 0.0952 0.656
60 2 1 0.167 0.107 0.0476 0.583
120 1 0 0.167 0.107 0.0476 0.583
TNM_PATH_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 4 0.333 0.192 0.1075 1.000
24 2 0 0.333 0.192 0.1075 1.000
36 2 0 0.333 0.192 0.1075 1.000
48 1 1 0.167 0.152 0.0278 0.997
TNM_PATH_STAGE_GROUP=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 650 64 0.915 0.0102 0.895 0.935
24 554 39 0.857 0.0131 0.832 0.883
36 479 17 0.830 0.0143 0.802 0.858
48 421 12 0.808 0.0152 0.779 0.838
60 357 13 0.781 0.0165 0.749 0.814
120 88 39 0.648 0.0252 0.600 0.699
## Univariable Cox Proportional Hazard Model for: TNM_PATH_STAGE_GROUP
Loglik converged before variable 7,11 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
n= 1093, number of events= 283
(87 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_STAGE_GROUP1A 4.563e-03 1.005e+00 2.778e-01 0.016 0.987
TNM_PATH_STAGE_GROUP1B 7.066e-01 2.027e+00 6.090e-01 1.160 0.246
TNM_PATH_STAGE_GROUP2 1.820e-01 1.200e+00 6.087e-01 0.299 0.765
TNM_PATH_STAGE_GROUP2A 1.363e-01 1.146e+00 7.329e-01 0.186 0.852
TNM_PATH_STAGE_GROUP2B 3.649e-01 1.440e+00 1.019e+00 0.358 0.720
TNM_PATH_STAGE_GROUP3 2.622e-01 1.300e+00 7.330e-01 0.358 0.721
TNM_PATH_STAGE_GROUP3A -1.340e+01 1.509e-06 5.363e+03 -0.002 0.998
TNM_PATH_STAGE_GROUP4 1.769e+00 5.865e+00 3.163e-01 5.593 2.24e-08 ***
TNM_PATH_STAGE_GROUP4A 1.763e+00 5.828e+00 3.591e-01 4.909 9.14e-07 ***
TNM_PATH_STAGE_GROUP4B 2.044e+00 7.718e+00 4.895e-01 4.174 2.99e-05 ***
TNM_PATH_STAGE_GROUPN_A -1.340e+01 1.511e-06 1.643e+03 -0.008 0.993
TNM_PATH_STAGE_GROUP99 1.237e-01 1.132e+00 2.060e-01 0.601 0.548
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1A 1.005e+00 9.954e-01 0.5828 1.732
TNM_PATH_STAGE_GROUP1B 2.027e+00 4.933e-01 0.6144 6.688
TNM_PATH_STAGE_GROUP2 1.200e+00 8.336e-01 0.3639 3.955
TNM_PATH_STAGE_GROUP2A 1.146e+00 8.726e-01 0.2725 4.821
TNM_PATH_STAGE_GROUP2B 1.440e+00 6.943e-01 0.1954 10.616
TNM_PATH_STAGE_GROUP3 1.300e+00 7.693e-01 0.3090 5.468
TNM_PATH_STAGE_GROUP3A 1.509e-06 6.629e+05 0.0000 Inf
TNM_PATH_STAGE_GROUP4 5.865e+00 1.705e-01 3.1550 10.901
TNM_PATH_STAGE_GROUP4A 5.828e+00 1.716e-01 2.8833 11.780
TNM_PATH_STAGE_GROUP4B 7.718e+00 1.296e-01 2.9567 20.146
TNM_PATH_STAGE_GROUPN_A 1.511e-06 6.620e+05 0.0000 Inf
TNM_PATH_STAGE_GROUP99 1.132e+00 8.836e-01 0.7558 1.695
Concordance= 0.578 (se = 0.015 )
Rsquare= 0.05 (max possible= 0.965 )
Likelihood ratio test= 56.16 on 12 df, p=1.121e-07
Wald test = 83.01 on 12 df, p=1.098e-12
Score (logrank) test = 105.7 on 12 df, p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 13 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 13.



Margins
uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n events median 0.95LCL 0.95UCL
MARGINS=No Residual 179 33 NA NA NA
MARGINS=Residual, NOS 13 3 NA 27.7 NA
MARGINS=Microscopic Resid 12 3 NA 67.8 NA
MARGINS=Macroscopic Resid 5 2 80.6 80.6 NA
MARGINS=Not evaluable 44 6 NA NA NA
MARGINS=No surg 816 229 NA 135.6 NA
MARGINS=Unknown 111 24 NA 127.9 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
MARGINS=No Residual
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 160 7 0.960 0.0149 0.931 0.989
24 137 6 0.922 0.0208 0.882 0.964
36 117 5 0.887 0.0252 0.839 0.938
48 107 5 0.848 0.0295 0.793 0.908
60 94 2 0.832 0.0311 0.773 0.895
120 25 7 0.742 0.0442 0.660 0.834
MARGINS=Residual, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 1 0.909 0.0867 0.754 1
24 9 0 0.909 0.0867 0.754 1
36 5 2 0.707 0.1429 0.476 1
48 5 0 0.707 0.1429 0.476 1
60 4 0 0.707 0.1429 0.476 1
MARGINS=Microscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 0 1.000 0.0000 1.000 1
24 9 1 0.909 0.0867 0.754 1
36 9 0 0.909 0.0867 0.754 1
48 8 1 0.808 0.1225 0.600 1
60 8 0 0.808 0.1225 0.600 1
120 3 1 0.707 0.1429 0.476 1
MARGINS=Macroscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 0 1.0 0.000 1.000 1
24 5 0 1.0 0.000 1.000 1
36 5 0 1.0 0.000 1.000 1
48 5 0 1.0 0.000 1.000 1
60 4 1 0.8 0.179 0.516 1
MARGINS=Not evaluable
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 35 3 0.924 0.0421 0.845 1.000
24 33 1 0.897 0.0488 0.806 0.998
36 26 1 0.864 0.0572 0.759 0.984
48 26 0 0.864 0.0572 0.759 0.984
60 23 0 0.864 0.0572 0.759 0.984
120 5 1 0.816 0.0714 0.687 0.968
MARGINS=No surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 655 90 0.885 0.0114 0.863 0.908
24 548 50 0.815 0.0142 0.788 0.843
36 473 19 0.786 0.0152 0.756 0.816
48 400 13 0.763 0.0160 0.732 0.795
60 327 16 0.729 0.0174 0.696 0.764
120 79 36 0.600 0.0255 0.553 0.653
MARGINS=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 95 5 0.953 0.0206 0.913 0.994
24 81 4 0.909 0.0290 0.854 0.968
36 71 1 0.898 0.0308 0.840 0.960
48 63 1 0.884 0.0334 0.821 0.952
60 54 4 0.827 0.0415 0.750 0.913
120 12 8 0.627 0.0720 0.501 0.785
## Univariable Cox Proportional Hazard Model for: MARGINS
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
MARGINSResidual, NOS 0.5029 1.6535 0.6033 0.834 0.40456
MARGINSMicroscopic Resid 0.1659 1.1805 0.6032 0.275 0.78328
MARGINSMacroscopic Resid 0.6374 1.8915 0.7284 0.875 0.38158
MARGINSNot evaluable -0.2217 0.8012 0.4439 -0.499 0.61745
MARGINSNo surg 0.5740 1.7753 0.1863 3.080 0.00207 **
MARGINSUnknown 0.2144 1.2392 0.2683 0.799 0.42423
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS 1.6535 0.6048 0.5068 5.395
MARGINSMicroscopic Resid 1.1805 0.8471 0.3619 3.850
MARGINSMacroscopic Resid 1.8915 0.5287 0.4537 7.886
MARGINSNot evaluable 0.8012 1.2482 0.3356 1.912
MARGINSNo surg 1.7753 0.5633 1.2322 2.558
MARGINSUnknown 1.2392 0.8070 0.7323 2.097
Concordance= 0.56 (se = 0.015 )
Rsquare= 0.014 (max possible= 0.964 )
Likelihood ratio test= 16.3 on 6 df, p=0.01223
Wald test = 14.5 on 6 df, p=0.02454
Score (logrank) test = 14.92 on 6 df, p=0.02085
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: MARGINS



Margins Yes/No
#uni_var(test_var = "MARGINS_YN", data_imp = data)
30 Day Readmission
uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 1141 290 NA NA NA
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same 4 1 NA 0.89 NA
READM_HOSP_30_DAYS_F=Plan_Readmit_Same 13 5 41.1 27.70 NA
READM_HOSP_30_DAYS_F=9 22 4 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 941 99 0.910 0.00865 0.893 0.927
24 799 61 0.848 0.01109 0.827 0.870
36 685 27 0.818 0.01212 0.795 0.842
48 594 19 0.794 0.01295 0.769 0.820
60 496 23 0.761 0.01413 0.734 0.790
120 117 54 0.630 0.02113 0.589 0.672
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.75 0.217 0.426 1
24 2 0 0.75 0.217 0.426 1
36 2 0 0.75 0.217 0.426 1
48 2 0 0.75 0.217 0.426 1
60 2 0 0.75 0.217 0.426 1
READM_HOSP_30_DAYS_F=Plan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 2 0.839 0.104 0.657 1.000
24 6 1 0.734 0.134 0.513 1.000
36 5 1 0.612 0.158 0.369 1.000
48 4 1 0.490 0.167 0.251 0.956
60 3 0 0.490 0.167 0.251 0.956
120 2 0 0.490 0.167 0.251 0.956
READM_HOSP_30_DAYS_F=9
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 18 4 0.818 0.0822 0.672 0.996
24 15 0 0.818 0.0822 0.672 0.996
36 14 0 0.818 0.0822 0.672 0.996
48 14 0 0.818 0.0822 0.672 0.996
60 13 0 0.818 0.0822 0.672 0.996
120 5 0 0.818 0.0822 0.672 0.996
## Univariable Cox Proportional Hazard Model for: READM_HOSP_30_DAYS_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
READM_HOSP_30_DAYS_FUnplan_Readmit_Same 0.1403 1.1506 1.0020 0.140 0.889
READM_HOSP_30_DAYS_FPlan_Readmit_Same 0.5710 1.7700 0.4515 1.265 0.206
READM_HOSP_30_DAYS_F9 -0.5237 0.5923 0.5037 -1.040 0.298
exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_FUnplan_Readmit_Same 1.1506 0.8691 0.1614 8.200
READM_HOSP_30_DAYS_FPlan_Readmit_Same 1.7700 0.5650 0.7305 4.289
READM_HOSP_30_DAYS_F9 0.5923 1.6882 0.2207 1.590
Concordance= 0.508 (se = 0.005 )
Rsquare= 0.002 (max possible= 0.964 )
Likelihood ratio test= 2.69 on 3 df, p=0.4416
Wald test = 2.74 on 3 df, p=0.4332
Score (logrank) test = 2.82 on 3 df, p=0.4206
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: READM_HOSP_30_DAYS_F



Radiation Type
uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None 699 180 NA NA NA
RX_SUMM_RADIATION_F=Beam Radiation 461 113 NA 135.6 NA
RX_SUMM_RADIATION_F=Radioactive Implants 8 3 58.2 22.2 NA
RX_SUMM_RADIATION_F=Beam + Imp or Isotopes 1 0 NA NA NA
RX_SUMM_RADIATION_F=Radiation, NOS 5 2 127.9 11.6 NA
RX_SUMM_RADIATION_F=Unknown 6 2 NA 20.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
RX_SUMM_RADIATION_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 548 80 0.880 0.0126 0.856 0.905
24 473 29 0.832 0.0148 0.803 0.861
36 407 14 0.806 0.0158 0.775 0.838
48 359 8 0.789 0.0166 0.757 0.822
60 304 12 0.761 0.0179 0.727 0.797
120 76 35 0.617 0.0277 0.565 0.674
RX_SUMM_RADIATION_F=Beam Radiation
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 408 23 0.949 0.0104 0.928 0.969
24 339 31 0.874 0.0161 0.843 0.906
36 291 14 0.836 0.0183 0.801 0.873
48 247 12 0.799 0.0203 0.760 0.840
60 205 10 0.765 0.0222 0.722 0.809
120 47 19 0.664 0.0298 0.608 0.725
RX_SUMM_RADIATION_F=Radioactive Implants
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 1 0.857 0.132 0.633 1
24 4 1 0.686 0.186 0.403 1
36 3 0 0.686 0.186 0.403 1
48 3 0 0.686 0.186 0.403 1
RX_SUMM_RADIATION_F=Beam + Imp or Isotopes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
RX_SUMM_RADIATION_F=Radiation, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 1 0.75 0.217 0.426 1
24 3 0 0.75 0.217 0.426 1
36 3 0 0.75 0.217 0.426 1
48 3 0 0.75 0.217 0.426 1
60 3 0 0.75 0.217 0.426 1
120 1 0 0.75 0.217 0.426 1
RX_SUMM_RADIATION_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 1 0.8 0.179 0.516 1
24 2 1 0.6 0.219 0.293 1
36 1 0 0.6 0.219 0.293 1
48 1 0 0.6 0.219 0.293 1
60 1 0 0.6 0.219 0.293 1
## Univariable Cox Proportional Hazard Model for: RX_SUMM_RADIATION_F
Loglik converged before variable 3 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation -1.088e-01 8.969e-01 1.201e-01 -0.906 0.365
RX_SUMM_RADIATION_FRadioactive Implants 7.853e-01 2.193e+00 5.832e-01 1.347 0.178
RX_SUMM_RADIATION_FBeam + Imp or Isotopes -1.305e+01 2.156e-06 1.090e+03 -0.012 0.990
RX_SUMM_RADIATION_FRadiation, NOS 2.684e-01 1.308e+00 7.115e-01 0.377 0.706
RX_SUMM_RADIATION_FUnknown 7.917e-01 2.207e+00 7.116e-01 1.113 0.266
exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation 8.969e-01 1.115e+00 0.7088 1.135
RX_SUMM_RADIATION_FRadioactive Implants 2.193e+00 4.560e-01 0.6993 6.878
RX_SUMM_RADIATION_FBeam + Imp or Isotopes 2.156e-06 4.638e+05 0.0000 Inf
RX_SUMM_RADIATION_FRadiation, NOS 1.308e+00 7.646e-01 0.3243 5.274
RX_SUMM_RADIATION_FUnknown 2.207e+00 4.531e-01 0.5471 8.903
Concordance= 0.531 (se = 0.015 )
Rsquare= 0.004 (max possible= 0.964 )
Likelihood ratio test= 4.39 on 5 df, p=0.4954
Wald test = 4.37 on 5 df, p=0.497
Score (logrank) test = 4.96 on 5 df, p=0.4206
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_SUMM_RADIATION_F



Lymphovascular Invasion
#uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)
Endoscopic/Robotic
uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
613 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg 455 96 91.7 NA NA
RX_HOSP_SURG_APPR_2010_F=Endo_Lap_to_Open 1 0 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown 110 19 93.9 NA NA
RX_HOSP_SURG_APPR_2010_F=Unknown 1 0 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
613 observations deleted due to missingness
RX_HOSP_SURG_APPR_2010_F=No_Surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 361 44 0.899 0.0145 0.871 0.927
24 290 23 0.837 0.0184 0.802 0.874
36 219 11 0.803 0.0203 0.764 0.844
48 153 7 0.772 0.0226 0.729 0.818
60 96 7 0.726 0.0273 0.675 0.782
RX_HOSP_SURG_APPR_2010_F=Endo_Lap_to_Open
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
RX_HOSP_SURG_APPR_2010_F=Open_Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 96 7 0.935 0.0238 0.889 0.983
24 75 4 0.892 0.0310 0.833 0.955
36 56 1 0.880 0.0329 0.817 0.947
48 48 2 0.846 0.0392 0.773 0.927
60 34 4 0.773 0.0501 0.681 0.878
RX_HOSP_SURG_APPR_2010_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
## Univariable Cox Proportional Hazard Model for: RX_HOSP_SURG_APPR_2010_F
Loglik converged before variable 1,3 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
n= 567, number of events= 115
(613 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open -1.408e+01 7.645e-07 3.364e+03 -0.004 0.997
RX_HOSP_SURG_APPR_2010_FOpen_Unknown -3.952e-01 6.736e-01 2.594e-01 -1.524 0.128
RX_HOSP_SURG_APPR_2010_FUnknown -1.408e+01 7.650e-07 2.550e+03 -0.006 0.996
exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open 7.645e-07 1.308e+06 0.0000 Inf
RX_HOSP_SURG_APPR_2010_FOpen_Unknown 6.736e-01 1.485e+00 0.4051 1.12
RX_HOSP_SURG_APPR_2010_FUnknown 7.650e-07 1.307e+06 0.0000 Inf
Concordance= 0.53 (se = 0.02 )
Rsquare= 0.005 (max possible= 0.906 )
Likelihood ratio test= 3.12 on 3 df, p=0.373
Wald test = 2.32 on 3 df, p=0.5085
Score (logrank) test = 2.65 on 3 df, p=0.4485
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_HOSP_SURG_APPR_2010_F



Surgery Radiation Sequence
uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone 217 42 NA NA NA
SURG_RAD_SEQ=Surg then Rad 140 27 NA NA NA
SURG_RAD_SEQ=Rad Alone 332 89 135.6 127.2 NA
SURG_RAD_SEQ=No Treatment 473 132 NA 140.2 NA
SURG_RAD_SEQ=Other 16 8 41.1 11.9 NA
SURG_RAD_SEQ=Rad then Surg 2 2 43.3 25.7 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
SURG_RAD_SEQ=Surg Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 176 15 0.927 0.0181 0.892 0.963
24 151 5 0.899 0.0215 0.858 0.942
36 132 3 0.880 0.0236 0.835 0.928
48 120 4 0.853 0.0266 0.802 0.907
60 103 4 0.823 0.0295 0.768 0.883
120 20 11 0.672 0.0508 0.579 0.779
SURG_RAD_SEQ=Surg then Rad
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 133 1 0.993 0.00743 0.978 1.000
24 118 7 0.938 0.02117 0.898 0.981
36 98 5 0.896 0.02735 0.844 0.951
48 91 3 0.868 0.03098 0.809 0.931
60 81 3 0.839 0.03421 0.774 0.908
120 24 6 0.756 0.04490 0.673 0.849
SURG_RAD_SEQ=Rad Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 282 24 0.925 0.0147 0.897 0.954
24 226 25 0.839 0.0211 0.799 0.882
36 198 8 0.808 0.0230 0.765 0.855
48 161 9 0.769 0.0254 0.721 0.820
60 126 8 0.726 0.0282 0.672 0.783
120 23 12 0.621 0.0388 0.549 0.701
SURG_RAD_SEQ=No Treatment
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 368 61 0.866 0.0160 0.835 0.898
24 318 24 0.807 0.0189 0.771 0.845
36 271 11 0.778 0.0202 0.739 0.818
48 236 3 0.769 0.0206 0.729 0.810
60 198 8 0.741 0.0221 0.699 0.785
120 55 23 0.603 0.0331 0.541 0.671
SURG_RAD_SEQ=Other
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 5 0.650 0.127 0.444 0.953
24 7 1 0.578 0.132 0.370 0.903
36 6 0 0.578 0.132 0.370 0.903
48 5 1 0.481 0.141 0.272 0.853
60 5 0 0.481 0.141 0.272 0.853
120 2 1 0.361 0.148 0.161 0.807
SURG_RAD_SEQ=Rad then Surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 2 0 1.0 0.000 1.000 1
36 1 1 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
## Univariable Cox Proportional Hazard Model for: SURG_RAD_SEQ
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad -0.1856 0.8306 0.2468 -0.752 0.45194
SURG_RAD_SEQRad Alone 0.3825 1.4660 0.1873 2.042 0.04116 *
SURG_RAD_SEQNo Treatment 0.4116 1.5093 0.1772 2.323 0.02017 *
SURG_RAD_SEQOther 1.2354 3.4396 0.3860 3.201 0.00137 **
SURG_RAD_SEQRad then Surg 1.7646 5.8394 0.7244 2.436 0.01485 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 0.8306 1.2040 0.512 1.347
SURG_RAD_SEQRad Alone 1.4660 0.6821 1.015 2.116
SURG_RAD_SEQNo Treatment 1.5093 0.6626 1.066 2.136
SURG_RAD_SEQOther 3.4396 0.2907 1.614 7.329
SURG_RAD_SEQRad then Surg 5.8394 0.1712 1.412 24.154
Concordance= 0.58 (se = 0.017 )
Rsquare= 0.018 (max possible= 0.964 )
Likelihood ratio test= 21.84 on 5 df, p=0.0005625
Wald test = 23.5 on 5 df, p=0.0002708
Score (logrank) test = 25.44 on 5 df, p=0.0001146
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURG_RAD_SEQ



Surgery Yes/No
uni_var(test_var = "SURGERY_YN", data_imp = data)
_________________________________________________
## SURGERY_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n events median 0.95LCL 0.95UCL
SURGERY_YN=No 807 224 NA 135.6 NA
SURGERY_YN=Ukn 11 5 91.7 11.9 NA
SURGERY_YN=Yes 362 71 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
SURGERY_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 650 87 0.888 0.0113 0.866 0.911
24 544 50 0.817 0.0142 0.790 0.845
36 469 19 0.787 0.0152 0.758 0.818
48 397 12 0.766 0.0160 0.735 0.798
60 324 16 0.732 0.0174 0.699 0.767
120 78 35 0.605 0.0257 0.556 0.657
SURGERY_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 3 0.667 0.157 0.420 1.000
24 5 0 0.667 0.157 0.420 1.000
36 5 0 0.667 0.157 0.420 1.000
48 4 1 0.533 0.173 0.282 1.000
60 4 0 0.533 0.173 0.282 1.000
120 2 1 0.400 0.174 0.171 0.938
SURGERY_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 314 16 0.954 0.0113 0.932 0.976
24 273 12 0.915 0.0153 0.886 0.946
36 232 9 0.884 0.0181 0.849 0.920
48 213 7 0.856 0.0203 0.817 0.897
60 186 7 0.827 0.0223 0.785 0.872
120 44 18 0.704 0.0343 0.640 0.775
## Univariable Cox Proportional Hazard Model for: SURGERY_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
SURGERY_YNUkn 0.5898 1.8036 0.4525 1.303 0.192446
SURGERY_YNYes -0.4730 0.6231 0.1363 -3.471 0.000519 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURGERY_YNUkn 1.8036 0.5545 0.743 4.3783
SURGERY_YNYes 0.6231 1.6048 0.477 0.8139
Concordance= 0.562 (se = 0.015 )
Rsquare= 0.013 (max possible= 0.964 )
Likelihood ratio test= 15.07 on 2 df, p=0.0005341
Wald test = 14.48 on 2 df, p=0.0007164
Score (logrank) test = 14.87 on 2 df, p=0.0005892
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURGERY_YN



Radiation Yes/No
uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
8 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RADIATION_YN=No 697 178 NA NA NA
RADIATION_YN=Yes 475 118 NA 136 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
8 observations deleted due to missingness
RADIATION_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 548 78 0.883 0.0125 0.859 0.908
24 473 29 0.834 0.0147 0.806 0.863
36 407 14 0.808 0.0158 0.778 0.840
48 359 8 0.792 0.0165 0.760 0.825
60 304 12 0.763 0.0178 0.729 0.799
120 76 35 0.619 0.0277 0.567 0.676
RADIATION_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 418 25 0.946 0.0106 0.925 0.967
24 347 32 0.870 0.0161 0.839 0.902
36 298 14 0.833 0.0182 0.799 0.870
48 254 12 0.798 0.0201 0.759 0.838
60 209 11 0.760 0.0221 0.718 0.805
120 48 19 0.663 0.0292 0.608 0.722
## Univariable Cox Proportional Hazard Model for: RADIATION_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
n= 1172, number of events= 296
(8 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RADIATION_YNYes -0.08048 0.92267 0.11877 -0.678 0.498
exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes 0.9227 1.084 0.7311 1.165
Concordance= 0.523 (se = 0.015 )
Rsquare= 0 (max possible= 0.963 )
Likelihood ratio test= 0.46 on 1 df, p=0.4969
Wald test = 0.46 on 1 df, p=0.498
Score (logrank) test = 0.46 on 1 df, p=0.4979
## Unadjusted Kaplan Meier Overall Survival Curve for: RADIATION_YN



Chemo Yes/No
uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n events median 0.95LCL 0.95UCL
CHEMO_YN=No 819 161 NA NA NA
CHEMO_YN=Yes 323 132 98.2 77 NA
CHEMO_YN=Ukn 38 7 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
CHEMO_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 691 53 0.933 0.00887 0.916 0.951
24 601 30 0.891 0.01137 0.869 0.913
36 512 18 0.863 0.01280 0.838 0.888
48 445 13 0.839 0.01399 0.812 0.867
60 377 10 0.819 0.01508 0.790 0.849
120 89 32 0.709 0.02358 0.664 0.756
CHEMO_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 245 52 0.832 0.0213 0.792 0.875
24 194 29 0.730 0.0258 0.681 0.782
36 169 10 0.691 0.0272 0.640 0.746
48 146 6 0.665 0.0281 0.613 0.723
60 122 12 0.609 0.0301 0.553 0.671
120 30 21 0.452 0.0387 0.382 0.535
CHEMO_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 34 1 0.971 0.0282 0.918 1.000
24 27 3 0.883 0.0551 0.781 0.998
36 25 0 0.883 0.0551 0.781 0.998
48 23 1 0.848 0.0632 0.732 0.981
60 15 1 0.801 0.0752 0.666 0.962
120 5 1 0.712 0.1072 0.530 0.956
## Univariable Cox Proportional Hazard Model for: CHEMO_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n= 1180, number of events= 300
coef exp(coef) se(coef) z Pr(>|z|)
CHEMO_YNYes 0.84659 2.33169 0.11751 7.205 5.82e-13 ***
CHEMO_YNUkn -0.07191 0.93061 0.38612 -0.186 0.852
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes 2.3317 0.4289 1.8520 2.936
CHEMO_YNUkn 0.9306 1.0746 0.4366 1.984
Concordance= 0.6 (se = 0.014 )
Rsquare= 0.042 (max possible= 0.964 )
Likelihood ratio test= 50.17 on 2 df, p=1.274e-11
Wald test = 53.31 on 2 df, p=2.657e-12
Score (logrank) test = 56.58 on 2 df, p=5.166e-13
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: CHEMO_YN



Treatment Yes/No
uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
38 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
Tx_YN=FALSE 258 48 NA NA NA
Tx_YN=TRUE 884 245 NA 136 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
38 observations deleted due to missingness
Tx_YN=FALSE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 202 28 0.888 0.0199 0.850 0.928
24 188 3 0.875 0.0211 0.834 0.917
36 162 2 0.864 0.0221 0.822 0.909
48 141 1 0.859 0.0226 0.815 0.904
60 119 2 0.845 0.0242 0.799 0.894
120 32 11 0.720 0.0432 0.640 0.809
Tx_YN=TRUE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 734 77 0.909 0.00986 0.890 0.929
24 607 56 0.837 0.01301 0.812 0.863
36 519 26 0.799 0.01435 0.772 0.828
48 450 18 0.770 0.01540 0.740 0.801
60 380 20 0.734 0.01668 0.702 0.767
120 87 42 0.607 0.02353 0.563 0.655
## Univariable Cox Proportional Hazard Model for: Tx_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
n= 1142, number of events= 293
(38 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
Tx_YNTRUE 0.4089 1.5051 0.1579 2.589 0.00962 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE 1.505 0.6644 1.104 2.051
Concordance= 0.523 (se = 0.013 )
Rsquare= 0.006 (max possible= 0.965 )
Likelihood ratio test= 7.33 on 1 df, p=0.006784
Wald test = 6.7 on 1 df, p=0.009622
Score (logrank) test = 6.8 on 1 df, p=0.00913
## Unadjusted Kaplan Meier Overall Survival Curve for: Tx_YN



Tumor specific Variables
Node Size
Cox Proportional Hazard Ratio
Model #1
Full analysis
model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
data = data)
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F +
INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F, data = data)
n= 938, number of events= 276
(242 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad -0.566322 0.567609 0.267246 -2.119 0.03408 *
SURG_RAD_SEQRad Alone -0.062566 0.939351 0.203372 -0.308 0.75835
SURG_RAD_SEQNo Treatment 0.328050 1.388258 0.198172 1.655 0.09785 .
SURG_RAD_SEQOther 0.776199 2.173197 0.409103 1.897 0.05779 .
SURG_RAD_SEQRad then Surg 1.020053 2.773341 0.803271 1.270 0.20413
INSURANCE_FNone 1.233832 3.434365 0.383941 3.214 0.00131 **
INSURANCE_FMedicaid 0.742470 2.101119 0.324114 2.291 0.02198 *
INSURANCE_FMedicare 0.135191 1.144755 0.178149 0.759 0.44793
INSURANCE_FOther Government -1.088961 0.336566 1.013362 -1.075 0.28255
INSURANCE_FUnknown -0.552636 0.575431 0.516924 -1.069 0.28503
AGE 0.061645 1.063585 0.006745 9.140 < 2e-16 ***
SEX_FFemale -0.045751 0.955280 0.128897 -0.355 0.72263
RACE_FBlack 0.898677 2.456352 0.190723 4.712 2.45e-06 ***
RACE_FOther/Unk 0.045934 1.047006 0.413940 0.111 0.91164
RACE_FAsian -0.559908 0.571262 0.518495 -1.080 0.28020
INCOME_F$38,000 - $47,999 0.083940 1.087564 0.226746 0.370 0.71124
INCOME_F$48,000 - $62,999 -0.140912 0.868566 0.237226 -0.594 0.55251
INCOME_F$63,000 + 0.197166 1.217946 0.265575 0.742 0.45784
U_R_FUrban 0.059738 1.061558 0.198979 0.300 0.76401
U_R_FRural 0.147958 1.159464 0.529784 0.279 0.78003
FACILITY_TYPE_FComprehensive Comm Ca Program -0.063472 0.938500 0.262659 -0.242 0.80905
FACILITY_TYPE_FAcademic/Research Program -0.396417 0.672726 0.264939 -1.496 0.13459
FACILITY_TYPE_FIntegrated Network Ca Program -0.388359 0.678169 0.331991 -1.170 0.24209
FACILITY_LOCATION_FMiddle Atlantic 0.468137 1.597017 0.342105 1.368 0.17119
FACILITY_LOCATION_FSouth Atlantic 0.520991 1.683695 0.345509 1.508 0.13158
FACILITY_LOCATION_FEast North Central 0.101458 1.106783 0.354481 0.286 0.77471
FACILITY_LOCATION_FEast South Central 0.201270 1.222955 0.417191 0.482 0.62949
FACILITY_LOCATION_FWest North Central 0.169121 1.184263 0.412332 0.410 0.68169
FACILITY_LOCATION_FWest South Central 0.352221 1.422223 0.459093 0.767 0.44296
FACILITY_LOCATION_FMountain -0.181029 0.834411 0.448149 -0.404 0.68625
FACILITY_LOCATION_FPacific 0.150220 1.162089 0.373406 0.402 0.68747
EDUCATION_F13 - 20.9% -0.143983 0.865903 0.228290 -0.631 0.52824
EDUCATION_F7 - 12.9% -0.161555 0.850819 0.236693 -0.683 0.49489
EDUCATION_FLess than 7% -0.178515 0.836512 0.278009 -0.642 0.52080
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 0.5676 1.7618 0.33618 0.9584
SURG_RAD_SEQRad Alone 0.9394 1.0646 0.63055 1.3994
SURG_RAD_SEQNo Treatment 1.3883 0.7203 0.94142 2.0472
SURG_RAD_SEQOther 2.1732 0.4602 0.97470 4.8454
SURG_RAD_SEQRad then Surg 2.7733 0.3606 0.57446 13.3890
INSURANCE_FNone 3.4344 0.2912 1.61821 7.2888
INSURANCE_FMedicaid 2.1011 0.4759 1.11318 3.9659
INSURANCE_FMedicare 1.1448 0.8735 0.80737 1.6231
INSURANCE_FOther Government 0.3366 2.9712 0.04618 2.4527
INSURANCE_FUnknown 0.5754 1.7378 0.20892 1.5849
AGE 1.0636 0.9402 1.04962 1.0777
SEX_FFemale 0.9553 1.0468 0.74202 1.2298
RACE_FBlack 2.4564 0.4071 1.69023 3.5697
RACE_FOther/Unk 1.0470 0.9551 0.46516 2.3567
RACE_FAsian 0.5713 1.7505 0.20677 1.5783
INCOME_F$38,000 - $47,999 1.0876 0.9195 0.69735 1.6961
INCOME_F$48,000 - $62,999 0.8686 1.1513 0.54560 1.3827
INCOME_F$63,000 + 1.2179 0.8211 0.72372 2.0497
U_R_FUrban 1.0616 0.9420 0.71874 1.5679
U_R_FRural 1.1595 0.8625 0.41049 3.2750
FACILITY_TYPE_FComprehensive Comm Ca Program 0.9385 1.0655 0.56087 1.5704
FACILITY_TYPE_FAcademic/Research Program 0.6727 1.4865 0.40024 1.1307
FACILITY_TYPE_FIntegrated Network Ca Program 0.6782 1.4746 0.35379 1.3000
FACILITY_LOCATION_FMiddle Atlantic 1.5970 0.6262 0.81679 3.1226
FACILITY_LOCATION_FSouth Atlantic 1.6837 0.5939 0.85539 3.3141
FACILITY_LOCATION_FEast North Central 1.1068 0.9035 0.55249 2.2172
FACILITY_LOCATION_FEast South Central 1.2230 0.8177 0.53988 2.7703
FACILITY_LOCATION_FWest North Central 1.1843 0.8444 0.52780 2.6572
FACILITY_LOCATION_FWest South Central 1.4222 0.7031 0.57834 3.4974
FACILITY_LOCATION_FMountain 0.8344 1.1984 0.34667 2.0084
FACILITY_LOCATION_FPacific 1.1621 0.8605 0.55898 2.4159
EDUCATION_F13 - 20.9% 0.8659 1.1549 0.55354 1.3545
EDUCATION_F7 - 12.9% 0.8508 1.1753 0.53501 1.3530
EDUCATION_FLess than 7% 0.8365 1.1954 0.48510 1.4425
Concordance= 0.754 (se = 0.019 )
Rsquare= 0.221 (max possible= 0.975 )
Likelihood ratio test= 234.5 on 34 df, p=0
Wald test = 208.2 on 34 df, p=0
Score (logrank) test = 234.3 on 34 df, p=0
Summary of Model
model_one %>%
tidy(., exponentiate = TRUE) %>%
select(term, estimate, conf.low, conf.high, p.value) %>%
rename(Variable = term,
Hazard_Ratio = estimate) %>%
tbl_df %>%
print(n = nrow(.))
Linear Regression
summary(fit_surv) # R^2 = , p =
Call:
lm(formula = DX_LASTCONTACT_DEATH_MONTHS ~ FACILITY_TYPE_F +
CHEMO_YN + RADIATION_YN + SURGERY_YN + IMMUNO_YN + AGE +
SEX_F + RACE_F + INSURANCE_F + INCOME_F + EDUCATION_F + YEAR_OF_DIAGNOSIS +
GRADE_F, data = data2)
Residuals:
Min 1Q Median 3Q Max
-95.540 -21.293 4.493 23.054 87.956
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 191.3812 36.9312 5.182 2.72e-07 ***
FACILITY_TYPE_FComprehensive Comm Ca Program 0.6702 5.0656 0.132 0.894774
FACILITY_TYPE_FAcademic/Research Program 1.5279 4.8763 0.313 0.754107
FACILITY_TYPE_FIntegrated Network Ca Program 5.4942 5.8825 0.934 0.350568
CHEMO_YNYes -10.3896 2.7064 -3.839 0.000132 ***
RADIATION_YNYes 5.6159 2.4811 2.263 0.023852 *
SURGERY_YNYes 5.7162 2.5943 2.203 0.027829 *
IMMUNO_YNYes 11.4536 8.2727 1.385 0.166554
IMMUNO_YNUkn -12.2307 15.8877 -0.770 0.441613
AGE -0.7704 0.1213 -6.349 3.47e-10 ***
SEX_FFemale -1.2377 2.3796 -0.520 0.603117
RACE_FBlack -14.2535 3.9786 -3.583 0.000359 ***
RACE_FOther/Unk 2.2005 7.9961 0.275 0.783225
RACE_FAsian -0.5150 7.5002 -0.069 0.945268
INSURANCE_FNone -16.4717 7.8190 -2.107 0.035431 *
INSURANCE_FMedicaid -2.1228 5.8363 -0.364 0.716158
INSURANCE_FMedicare 3.0289 3.3299 0.910 0.363269
INSURANCE_FOther Government 5.2547 9.3766 0.560 0.575346
INSURANCE_FUnknown -0.4817 8.5814 -0.056 0.955249
INCOME_F$38,000 - $47,999 -3.0600 4.7109 -0.650 0.516146
INCOME_F$48,000 - $62,999 1.3192 4.7482 0.278 0.781213
INCOME_F$63,000 + -7.5118 5.1510 -1.458 0.145107
EDUCATION_F13 - 20.9% 6.0543 4.5611 1.327 0.184726
EDUCATION_F7 - 12.9% 3.6991 4.7192 0.784 0.433339
EDUCATION_FLess than 7% 10.5984 5.2664 2.012 0.044475 *
YEAR_OF_DIAGNOSIS2005 -4.8725 6.0485 -0.806 0.420701
YEAR_OF_DIAGNOSIS2006 -4.3935 6.0448 -0.727 0.467534
YEAR_OF_DIAGNOSIS2007 -22.2989 5.6310 -3.960 8.10e-05 ***
YEAR_OF_DIAGNOSIS2008 -28.8659 5.8990 -4.893 1.18e-06 ***
YEAR_OF_DIAGNOSIS2009 -23.0326 5.5655 -4.138 3.83e-05 ***
YEAR_OF_DIAGNOSIS2010 -27.7842 5.5135 -5.039 5.67e-07 ***
YEAR_OF_DIAGNOSIS2011 -32.6577 5.7855 -5.645 2.23e-08 ***
YEAR_OF_DIAGNOSIS2012 -45.7135 6.0817 -7.517 1.38e-13 ***
YEAR_OF_DIAGNOSIS2013 -49.4850 5.8255 -8.495 < 2e-16 ***
YEAR_OF_DIAGNOSIS2014 -61.6729 5.9956 -10.286 < 2e-16 ***
YEAR_OF_DIAGNOSIS2015 -66.4895 5.7898 -11.484 < 2e-16 ***
GRADE_FGr III: Poor Diff -65.8690 49.9992 -1.317 0.188046
GRADE_FGr IV: Undiff/Anaplastic -55.4046 36.1949 -1.531 0.126194
GRADE_F5 -62.6329 35.4270 -1.768 0.077417 .
GRADE_F6 -48.6550 36.2337 -1.343 0.179678
GRADE_F7 -21.7474 50.4767 -0.431 0.666690
GRADE_FNA/Unkown -55.0004 35.4765 -1.550 0.121420
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 34.81 on 882 degrees of freedom
(207 observations deleted due to missingness)
Multiple R-squared: 0.3547, Adjusted R-squared: 0.3247
F-statistic: 11.82 on 41 and 882 DF, p-value: < 2.2e-16
Prediction Logistic Regression Models
Surgery
Chemo
Radiation
Immunotherapy
Any Treatment
no_Ukns <- data %>%
filter(Tx_YN != "Ukn") %>%
droplevels()
fit_tx <- glm(Tx_YN ~ FACILITY_TYPE_F + FACILITY_LOCATION_F +
AGE_F + SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F +
EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F,
data = no_Ukns)
summary(fit_tx)
Call:
glm(formula = Tx_YN ~ FACILITY_TYPE_F + FACILITY_LOCATION_F +
AGE_F + SEX_F + RACE_F + HISPANIC + INSURANCE_F + INCOME_F +
EDUCATION_F + YEAR_OF_DIAGNOSIS + SITE_TEXT + GRADE_F, data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.00725 -0.02422 0.13310 0.24735 0.55586
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.405845 0.435552 3.228 0.001294 **
FACILITY_TYPE_FComprehensive Comm Ca Program 0.004788 0.056304 0.085 0.932256
FACILITY_TYPE_FAcademic/Research Program -0.024470 0.054072 -0.453 0.650993
FACILITY_TYPE_FIntegrated Network Ca Program 0.042903 0.066769 0.643 0.520685
FACILITY_LOCATION_FMiddle Atlantic -0.209689 0.062339 -3.364 0.000803 ***
FACILITY_LOCATION_FSouth Atlantic -0.140144 0.062522 -2.242 0.025244 *
FACILITY_LOCATION_FEast North Central -0.190387 0.062464 -3.048 0.002374 **
FACILITY_LOCATION_FEast South Central -0.019762 0.078456 -0.252 0.801186
FACILITY_LOCATION_FWest North Central -0.124636 0.075001 -1.662 0.096915 .
FACILITY_LOCATION_FWest South Central -0.109874 0.084159 -1.306 0.192049
FACILITY_LOCATION_FMountain -0.128665 0.078065 -1.648 0.099676 .
FACILITY_LOCATION_FPacific -0.156798 0.067605 -2.319 0.020608 *
AGE_F(54,64] 0.018553 0.036800 0.504 0.614287
AGE_F(64,74] 0.013502 0.047762 0.283 0.777480
AGE_F(74,100] 0.033044 0.048544 0.681 0.496248
SEX_FFemale -0.041361 0.026722 -1.548 0.122032
RACE_FBlack -0.028161 0.045352 -0.621 0.534795
RACE_FOther/Unk -0.066432 0.094397 -0.704 0.481773
RACE_FAsian 0.038301 0.086334 0.444 0.657415
HISPANICYes 0.102547 0.064464 1.591 0.112028
HISPANICUnknown 0.012004 0.066373 0.181 0.856527
INSURANCE_FNone 0.070849 0.086544 0.819 0.413211
INSURANCE_FMedicaid -0.022149 0.065069 -0.340 0.733639
INSURANCE_FMedicare -0.062852 0.040256 -1.561 0.118812
INSURANCE_FOther Government -0.028337 0.106134 -0.267 0.789539
INSURANCE_FUnknown -0.155886 0.094712 -1.646 0.100146
INCOME_F$38,000 - $47,999 -0.139155 0.052908 -2.630 0.008686 **
INCOME_F$48,000 - $62,999 -0.122428 0.053990 -2.268 0.023596 *
INCOME_F$63,000 + -0.110397 0.058896 -1.874 0.061203 .
EDUCATION_F13 - 20.9% 0.083628 0.052026 1.607 0.108318
EDUCATION_F7 - 12.9% 0.061351 0.054348 1.129 0.259276
EDUCATION_FLess than 7% 0.084102 0.061259 1.373 0.170138
YEAR_OF_DIAGNOSIS2005 0.039863 0.067502 0.591 0.554972
YEAR_OF_DIAGNOSIS2006 -0.001917 0.067716 -0.028 0.977426
YEAR_OF_DIAGNOSIS2007 0.026652 0.063217 0.422 0.673428
YEAR_OF_DIAGNOSIS2008 -0.139901 0.066531 -2.103 0.035771 *
YEAR_OF_DIAGNOSIS2009 0.047282 0.062630 0.755 0.450483
YEAR_OF_DIAGNOSIS2010 -0.058355 0.061386 -0.951 0.342063
YEAR_OF_DIAGNOSIS2011 -0.064427 0.064966 -0.992 0.321613
YEAR_OF_DIAGNOSIS2012 -0.157388 0.068110 -2.311 0.021077 *
YEAR_OF_DIAGNOSIS2013 -0.020436 0.065692 -0.311 0.755805
YEAR_OF_DIAGNOSIS2014 0.073752 0.067693 1.090 0.276230
YEAR_OF_DIAGNOSIS2015 -0.126795 0.065307 -1.942 0.052517 .
SITE_TEXTC44.1 Eyelid -0.092427 0.266434 -0.347 0.728748
SITE_TEXTC44.2 External ear -0.055926 0.182017 -0.307 0.758724
SITE_TEXTC44.3 Skin of ear and unspecified parts of face -0.110950 0.138731 -0.800 0.424071
SITE_TEXTC44.4 Skin of scalp and neck -0.132072 0.143077 -0.923 0.356220
SITE_TEXTC44.5 Skin of trunk -0.121095 0.136498 -0.887 0.375242
SITE_TEXTC44.6 Skin of upper limb and shoulder -0.154806 0.136862 -1.131 0.258320
SITE_TEXTC44.7 Skin of lower limb and hip -0.135340 0.135940 -0.996 0.319729
SITE_TEXTC44.8 Overlapping lesion of skin -0.326628 0.146188 -2.234 0.025716 *
SITE_TEXTC44.9 Skin, NOS -0.254624 0.135176 -1.884 0.059945 .
SITE_TEXTC51.9 Vulva, NOS 0.044780 0.312388 0.143 0.886049
SITE_TEXTC52.9 Vagina, NOS 0.026371 0.427081 0.062 0.950778
SITE_TEXTC60.0 Prepuce -0.780425 0.420679 -1.855 0.063911 .
SITE_TEXTC60.9 Penis -0.343832 0.308783 -1.114 0.265798
GRADE_FGr III: Poor Diff -0.037325 0.563594 -0.066 0.947212
GRADE_FGr IV: Undiff/Anaplastic -0.181733 0.410003 -0.443 0.657696
GRADE_F5 -0.156542 0.401959 -0.389 0.697040
GRADE_F6 -0.146894 0.412761 -0.356 0.722015
GRADE_F7 0.083184 0.495427 0.168 0.866699
GRADE_FNA/Unkown -0.330164 0.402686 -0.820 0.412495
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.1507371)
Null deviance: 150.16 on 933 degrees of freedom
Residual deviance: 131.44 on 872 degrees of freedom
(208 observations deleted due to missingness)
AIC: 945.09
Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_rads), confint.default(fit_tx, level = 0.95)))
number of rows of result is not a multiple of vector length (arg 1)
Odds ratio 2.5 % 97.5 %
(Intercept) 1.8297836 1.7370314 9.5784096
FACILITY_TYPE_FComprehensive Comm Ca Program 0.8621574 0.8998155 1.1220313
FACILITY_TYPE_FAcademic/Research Program 0.4876133 0.8777017 1.0849232
FACILITY_TYPE_FIntegrated Network Ca Program 0.7718355 0.9157952 1.1897790
FACILITY_LOCATION_FMiddle Atlantic 0.7623553 0.7175800 0.9162132
FACILITY_LOCATION_FSouth Atlantic 1.3008497 0.7689836 0.9825515
FACILITY_LOCATION_FEast North Central 0.7500351 0.7313855 0.9342978
FACILITY_LOCATION_FEast South Central 0.7699909 0.8406892 1.1434029
FACILITY_LOCATION_FWest North Central 0.6492832 0.7621322 1.0226157
FACILITY_LOCATION_FWest South Central 0.7980793 0.7597078 1.0566192
FACILITY_LOCATION_FMountain 1.0581502 0.7545232 1.0246380
FACILITY_LOCATION_FPacific 0.7098408 0.7487862 0.9759986
AGE_F(54,64] 1.2114767 0.9478355 1.0949180
AGE_F(64,74] 1.2112700 0.9230146 1.1130614
AGE_F(74,100] 1.0316648 0.9397876 1.1367676
SEX_FFemale 1.0738527 0.9105232 1.0110747
RACE_FBlack 0.7020120 0.8895412 1.0626087
RACE_FOther/Unk 0.6907555 0.7776755 1.1258990
RACE_FAsian 1.0021452 0.8772962 1.2306132
HISPANICYes 0.6759286 0.9764801 1.2572096
HISPANICUnknown 0.5257933 0.8886197 1.1526840
INSURANCE_FNone 0.6249400 0.9059471 1.2718508
INSURANCE_FMedicaid 0.8512837 0.8609810 1.1111372
INSURANCE_FMedicare 0.5668372 0.8678362 1.0161774
INSURANCE_FOther Government 0.6120539 0.7894992 1.1968375
INSURANCE_FUnknown 0.9904401 0.7106903 1.0301931
INCOME_F$38,000 - $47,999 0.9542141 0.7843861 0.9651644
INCOME_F$48,000 - $62,999 1.0873997 0.7959287 0.9835268
INCOME_F$63,000 + 1.4235106 0.7978526 1.0050495
EDUCATION_F13 - 20.9% 1.0663355 0.9818273 1.2039362
EDUCATION_F7 - 12.9% 0.7203503 0.9558347 1.1827847
EDUCATION_FLess than 7% 0.9807723 0.9646758 1.2265028
YEAR_OF_DIAGNOSIS2005 0.8198842 0.9117062 1.1878732
YEAR_OF_DIAGNOSIS2006 0.9444563 0.8740331 1.1397441
YEAR_OF_DIAGNOSIS2007 0.6924422 0.9073276 1.1624795
YEAR_OF_DIAGNOSIS2008 1.0089340 0.7631507 0.9905430
YEAR_OF_DIAGNOSIS2009 0.7798901 0.9273074 1.1853465
YEAR_OF_DIAGNOSIS2010 1.4622858 0.8363819 1.0639200
YEAR_OF_DIAGNOSIS2011 1.8297836 0.8255072 1.0649236
YEAR_OF_DIAGNOSIS2012 0.8621574 0.7476048 0.9763881
YEAR_OF_DIAGNOSIS2013 0.4876133 0.8614047 1.1144022
YEAR_OF_DIAGNOSIS2014 0.7718355 0.9427790 1.2292779
YEAR_OF_DIAGNOSIS2015 0.7623553 0.7750758 1.0012052
SITE_TEXTC44.1 Eyelid 1.3008497 0.5408426 1.5369099
SITE_TEXTC44.2 External ear 0.7500351 0.6618785 1.3509691
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 0.7699909 0.6819103 1.1746338
SITE_TEXTC44.4 Skin of scalp and neck 0.6492832 0.6619950 1.1599236
SITE_TEXTC44.5 Skin of trunk 0.7980793 0.6779876 1.1577020
SITE_TEXTC44.6 Skin of upper limb and shoulder 1.0581502 0.6550458 1.1201232
SITE_TEXTC44.7 Skin of lower limb and hip 0.7098408 0.6691291 1.1400798
SITE_TEXTC44.8 Overlapping lesion of skin 1.2114767 0.5416408 0.9606891
SITE_TEXTC44.9 Skin, NOS 1.2112700 0.5947798 1.0103695
SITE_TEXTC51.9 Vulva, NOS 1.0316648 0.5669477 1.9290900
SITE_TEXTC52.9 Vagina, NOS 1.0738527 0.4445504 2.3712894
SITE_TEXTC60.0 Prepuce 0.7020120 0.2009015 1.0450769
SITE_TEXTC60.9 Penis 0.6907555 0.3871140 1.2987113
GRADE_FGr III: Poor Diff 1.0021452 0.3191959 2.9075168
GRADE_FGr IV: Undiff/Anaplastic 0.6759286 0.3733177 1.8623862
GRADE_F5 0.5257933 0.3889252 1.8800219
GRADE_F6 0.6249400 0.3844695 1.9388636
GRADE_F7 0.8512837 0.4115456 2.8696860
GRADE_FNA/Unkown 0.5668372 0.3264711 1.5826278
Metastasis at Time of Diagnosis
LS0tCnRpdGxlOiAiQ0QzMCsgTHltcGhvcHJvbGlmZXJhdGl2ZSBEaXNvcmRlcnMiCmF1dGhvcjogIlJhbWllIEZhdGh5IgpkYXRlOiAiMTIvMTYvMjAxOSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogdW5pdGVkCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKLS0tCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KCmxpYnJhcnkoImdncGxvdDIiKQpsaWJyYXJ5KCJkcGx5ciIpCmxpYnJhcnkoInRpZHlyIikKbGlicmFyeSgia25pdHIiKQpsaWJyYXJ5KCJ0YWJsZW9uZSIpCmxpYnJhcnkoImZvcmNhdHMiKQpsaWJyYXJ5KCJzdXJ2aXZhbCIpCmxpYnJhcnkoIm5wc3VydiIpCmxpYnJhcnkoImJyb29tIikKbGlicmFyeSgidGliYmxlIikKbGlicmFyeSgicmVhZHIiKQpsaWJyYXJ5KCJzdXJ2bWluZXIiKQpsaWJyYXJ5KCJzdHJpbmdyIikKCgprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1UUlVFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPVRSVUUpCiclIWluJScgPC0gZnVuY3Rpb24oeCx5KSEoJyVpbiUnKHgseSkpCmBgYAoKYGBge3J9CnBfdGFibGUgPC0gZnVuY3Rpb24odGFiX2RhdGEsIC4uLikgewogIHRhYl9kYXRhXzIgPC0gZGVwYXJzZShzdWJzdGl0dXRlKHRhYl9kYXRhKSkKICAKICB0YWJsZV9wIDwtIGRvLmNhbGwoQ3JlYXRlVGFibGVPbmUsIAogICAgICAgICAgICAgICAgICAgICBsaXN0KGRhdGEgPSBhcy5uYW1lKHRhYl9kYXRhXzIpLCBpbmNsdWRlTkEgPSBUUlVFLCAuLi4pKQogIHRhYmxlX3Bfb3V0IDwtIHByaW50KHRhYmxlX3AsCiAgICAgICAgICAgICAgICAgICAgICAgc2hvd0FsbExldmVscyA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRUb2dnbGUgPSBGQUxTRSkKICBrYWJsZSh0YWJsZV9wX291dCwKICAgICAgICBhbGlnbiA9ICJjIikKfQpgYGAKCmBgYHtyfQp1bmlfdmFyIDwtIGZ1bmN0aW9uKHRlc3RfdmFyLCBkYXRhX2ltcCkgewoKICAgICAgICAgICAgICAgIAogICAgICAgIGNhdCgiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCIgICBcbiMjIiwgdGVzdF92YXIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIikKICAgICAgICBjYXQoIlxuIikKCiAgICAgICAgCiAgICAgICAgZiA8LSBhcy5mb3JtdWxhKHBhc3RlKCJTdXJ2KERYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUywgUFVGX1ZJVEFMX1NUQVRVUyA9PSAwKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzLm5hbWUodGVzdF92YXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiIH4gIiApKQogICAgICAgIAogICAgICAgIGRhdGFfaW1wXzIgPC0gZGVwYXJzZShzdWJzdGl0dXRlKGRhdGFfaW1wKSkKCiAgICAgICAga21fZml0IDwtIGRvLmNhbGwoInN1cnZmaXQiLCBsaXN0KGZvcm11bGEgPSBmLCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSkpCgogICAgICAgIHByaW50KGttX2ZpdCkKICAgICAgICBjYXQoIlxuIikKCiAgICAgICAgcHJpbnQoc3VtbWFyeShrbV9maXQsIHRpbWVzID0gYygxMiwgMjQsIDM2LCA0OCwgNjAsIDEyMCkpKQogICAgICAgIGNhdCgiXG4iKQoKCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCIgICBcbiMjIFVuaXZhcmlhYmxlIENveCBQcm9wb3J0aW9uYWwgSGF6YXJkIE1vZGVsIGZvcjogIiwgdGVzdF92YXIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCgoKICAgICAgICBuX2xldmVscyA8LSBubGV2ZWxzKGRhdGFfaW1wW1t0ZXN0X3Zhcl1dKQoKICAgICAgICBpZihuX2xldmVscyA9PSAxKXsKICAgICAgICAgICAgICAgIHByaW50KCJPbmx5IG9uZSBsZXZlbCwgbm8gQ294IG1vZGVsIHBlcmZvcm1lZCIpCiAgICAgICAgICAgICAgICBjYXQoIlxuIikKCiAgICAgICAgfSBlbHNlIHsKCgogICAgICAgICAgICAgICAgY294X2ZpdCA8LSBkby5jYWxsKCJjb3hwaCIsIGxpc3QoZm9ybXVsYSA9IGYsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpKSkKCiAgICAgICAgICAgICAgICBwcmludChzdW1tYXJ5KGNveF9maXQpKQogICAgICAgICAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGRvLmNhbGwoImdnZm9yZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QobW9kZWwgPSBjb3hfZml0LCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSkpCgoKICAgICAgICB9CgogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiXG4iKQogICAgICAgIGNhdCgiICAgXG4jIyBVbmFkanVzdGVkIEthcGxhbiBNZWllciBPdmVyYWxsIFN1cnZpdmFsIEN1cnZlIGZvcjogIiwgdGVzdF92YXIpCgoKICAgICAgICBwIDwtIGRvLmNhbGwoImdnc3VydnBsb3QiLAogICAgICAgICAgICAgICAgICAgICBsaXN0KGZpdCA9IGttX2ZpdCwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLCBjZW5zb3IgPSBGQUxTRSwgbGVnZW5kID0gInJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5ldHlwZSA9ICJzdHJhdGEiLCB4bGFiID0gIlRpbWUgKE1vbnRocykiKSkKCiAgICAgICAgcHJpbnQocCkKCn0KCmBgYAoKYGBge3IgY2h1bmsyLCBjYWNoZT1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCByZXN1bHRzPSdoaWRlJ30KY29sLndpZHRoIDwtIGMoMzcsIDEwLCAxLCAxLCAzLCAxLCAyLCAxLCAyLCAxLCAxLCAxLCAxLCAxLCAxLCA4LCAyLCAyLCAyLCA0LCA0LCAxLCA0LCAxLCAxLAogICAgICAgICAgICAgICAxLCAzLCAyLCAyLCA4LCAyLCA1LCA1LCA1LCA0LCA1LCA1LCA1LDQsIDIsIDEsIDIsIDEsIDMsIDEsIDEsIDEsIDEsIDEsIDEsIDMsCiAgICAgICAgICAgICAgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDYsIDgsCiAgICAgICAgICAgICAgIDgsIDgsIDIsIDEsIDEsIDEsIDEsIDgsIDEsIDEsIDgsIDEsIDEsIDIsIDIsIDUsIDIsIDUsIDMsIDEsIDMsIDEsIDgsIDgsIDIsIDgsCiAgICAgICAgICAgICAgIDIsIDgsIDIsIDIsIDEsIDgsIDEsIDEsIDEsIDEsIDEsIDgsIDEsIDIsIDIsIDIsIDIsIDIsIDEsIDEsIDEsIDIsIDEsIDMsIDEsIDEsCiAgICAgICAgICAgICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEpCgpjb2wubmFtZXMuYWJyIDwtIGMoIlBVRl9DQVNFX0lEIiwgIlBVRl9GQUNJTElUWV9JRCIsICJGQUNJTElUWV9UWVBFX0NEIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0NEIiwKICAgICAgICAgICAgICAgICAgICJBR0UiLCAiU0VYIiwgIlJBQ0UiLCAiU1BBTklTSF9ISVNQQU5JQ19PUklHSU4iLCAiSU5TVVJBTkNFX1NUQVRVUyIsCiAgICAgICAgICAgICAgICAgICAiTUVEX0lOQ19RVUFSXzAwIiwgIk5PX0hTRF9RVUFSXzAwIiwgIlVSX0NEXzAzIiwgIk1FRF9JTkNfUVVBUl8xMiIsICJOT19IU0RfUVVBUl8xMiIsCiAgICAgICAgICAgICAgICAgICAiVVJfQ0RfMTMiLCAiQ1JPV0ZMWSIsICJDRENDX1RPVEFMX0JFU1QiLCAiU0VRVUVOQ0VfTlVNQkVSIiwgIkNMQVNTX09GX0NBU0UiLAogICAgICAgICAgICAgICAgICAgIllFQVJfT0ZfRElBR05PU0lTIiwgIlBSSU1BUllfU0lURSIsICJMQVRFUkFMSVRZIiwgIkhJU1RPTE9HWSIsICJCRUhBVklPUiIsICJHUkFERSIsCiAgICAgICAgICAgICAgICAgICAiRElBR05PU1RJQ19DT05GSVJNQVRJT04iLCAiVFVNT1JfU0laRSIsICJSRUdJT05BTF9OT0RFU19QT1NJVElWRSIsCiAgICAgICAgICAgICAgICAgICAiUkVHSU9OQUxfTk9ERVNfRVhBTUlORUQiLCAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiUlhfU1VNTV9EWFNUR19QUk9DIiwgIlROTV9DTElOX1QiLAogICAgICAgICAgICAgICAgICAgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsICJUTk1fUEFUSF9UIiwgIlROTV9QQVRIX04iLCAiVE5NX1BBVEhfTSIsCiAgICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiVE5NX0VESVRJT05fTlVNQkVSIiwgIkFOQUxZVElDX1NUQUdFX0dST1VQIiwgIkNTX01FVFNfQVRfRFgiLAogICAgICAgICAgICAgICAgICAgIkNTX01FVFNfRVZBTCIsICJDU19FWFRFTlNJT04iLCAiQ1NfVFVNT1JfU0laRUVYVF9FVkFMIiwgIkNTX01FVFNfRFhfQk9ORSIsICJDU19NRVRTX0RYX0JSQUlOIiwKICAgICAgICAgICAgICAgICAgICJDU19NRVRTX0RYX0xJVkVSIiwgIkNTX01FVFNfRFhfTFVORyIsICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzMiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl80IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzUiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl82IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNyIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl84IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfOSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEwIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzExIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTIiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMyIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE1IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTYiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTciLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xOCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE5IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIwIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjEiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMiIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMyIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzI0IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjUiLAogICAgICAgICAgICAgICAgICAgIkNTX1ZFUlNJT05fTEFURVNUIiwgIkRYX1JYX1NUQVJURURfREFZUyIsICJEWF9TVVJHX1NUQVJURURfREFZUyIsICJEWF9ERUZTVVJHX1NUQVJURURfREFZUyIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9TVVJHX1BSSU1fU0lURSIsICJSWF9IT1NQX1NVUkdfQVBQUl8yMDEwIiwgIlJYX1NVTU1fU1VSR0lDQUxfTUFSR0lOUyIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9TQ09QRV9SRUdfTE5fU1VSIiwgIlJYX1NVTU1fU1VSR19PVEhfUkVHRElTIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLCAiUkVBRE1fSE9TUF8zMF9EQVlTIiwKICAgICAgICAgICAgICAgICAgICJSRUFTT05fRk9SX05PX1NVUkdFUlkiLCAiRFhfUkFEX1NUQVJURURfREFZUyIsICJSWF9TVU1NX1JBRElBVElPTiIsICJSQURfTE9DQVRJT05fT0ZfUlgiLAogICAgICAgICAgICAgICAgICAgIlJBRF9UUkVBVF9WT0wiLCAiUkFEX1JFR0lPTkFMX1JYX01PREFMSVRZIiwgIlJBRF9SRUdJT05BTF9ET1NFX0NHWSIsICJSQURfQk9PU1RfUlhfTU9EQUxJVFkiLAogICAgICAgICAgICAgICAgICAgIlJBRF9CT09TVF9ET1NFX0NHWSIsICJSQURfTlVNX1RSRUFUX1ZPTCIsICJSWF9TVU1NX1NVUkdSQURfU0VRIiwgIlJBRF9FTEFQU0VEX1JYX0RBWVMiLAogICAgICAgICAgICAgICAgICAgIlJFQVNPTl9GT1JfTk9fUkFESUFUSU9OIiwgIkRYX1NZU1RFTUlDX1NUQVJURURfREFZUyIsICJEWF9DSEVNT19TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9DSEVNTyIsCiAgICAgICAgICAgICAgICAgICAiRFhfSE9STU9ORV9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9IT1JNT05FIiwgIkRYX0lNTVVOT19TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9JTU1VTk9USEVSQVBZIiwKICAgICAgICAgICAgICAgICAgICJSWF9TVU1NX1RSTlNQTE5UX0VORE8iLCAiUlhfU1VNTV9TWVNURU1JQ19TVVJfU0VRIiwgIkRYX09USEVSX1NUQVJURURfREFZUyIsICJSWF9TVU1NX09USEVSIiwKICAgICAgICAgICAgICAgICAgICJQQUxMSUFUSVZFX0NBUkUiLCAiUlhfU1VNTV9UUkVBVE1FTlRfU1RBVFVTIiwgIlBVRl8zMF9EQVlfTU9SVF9DRCIsICJQVUZfOTBfREFZX01PUlRfQ0QiLAogICAgICAgICAgICAgICAgICAgIkRYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyIsICJQVUZfVklUQUxfU1RBVFVTIiwgIlJYX0hPU1BfU1VSR19QUklNX1NJVEUiLCAiUlhfSE9TUF9DSEVNTyIsCiAgICAgICAgICAgICAgICAgICAiUlhfSE9TUF9JTU1VTk9USEVSQVBZIiwgIlJYX0hPU1BfSE9STU9ORSIsICJSWF9IT1NQX09USEVSIiwgIlBVRl9NVUxUX1NPVVJDRSIsICJSRUZFUkVOQ0VfREFURV9GTEFHIiwKICAgICAgICAgICAgICAgICAgICJSWF9TVU1NX1NDT1BFX1JFR19MTl8yMDEyIiwgIlJYX0hPU1BfRFhTVEdfUFJPQyIsICJQQUxMSUFUSVZFX0NBUkVfSE9TUCIsICJUVU1PUl9TSVpFX1NVTU1BUlkiLAogICAgICAgICAgICAgICAgICAgIk1FVFNfQVRfRFhfT1RIRVIiLCAiTUVUU19BVF9EWF9ESVNUQU5UX0xOIiwgIk1FVFNfQVRfRFhfQk9ORSIsICJNRVRTX0FUX0RYX0JSQUlOIiwKICAgICAgICAgICAgICAgICAgICJNRVRTX0FUX0RYX0xJVkVSIiwgIk1FVFNfQVRfRFhfTFVORyIsICJOT19IU0RfUVVBUl8xNiIsICJNRURfSU5DX1FVQVJfMTYiLCAiTUVESUNBSURfRVhQTl9DT0RFIikKCgoKI1JlYWQgaW4gZGF0YSBmb3IgZWFjaCBzdWJzaXRlCmxpcCA8LSByZWFkX2Z3ZignTkNEQlBVRl9MaXAuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKbWVsYW5vbWEgPC0gcmVhZF9md2YoJ05DREJQVUZfTWVsYW5vbWEuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQogICAgICAgICAgICAgICAgICAgICAgIApza2luIDwtIHJlYWRfZndmKCdOQ0RCUFVGX090U2tpbi4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpob2RnZXh0ciA8LSByZWFkX2Z3ZignTkNEQlBVRl9Ib2RnRXh0ci4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpob2RnbmRhbCA8LSByZWFkX2Z3ZignTkNEQlBVRl9Ib2RnTmRhbC4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpOSExuZGFsIDwtIHJlYWRfZndmKCdOQ0RCUFVGX05ITE5kYWwuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKTkhMZXh0ciA8LSByZWFkX2Z3ZignTkNEQlBVRl9OSExFeHRyLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCgpicmVhc3QgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX0JyZWFzdC4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgp2dWx2YSA8LSAgcmVhZF9md2YoJ05DREJQVUZfVnVsdmEuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKdmFnaW5hIDwtICByZWFkX2Z3ZignTkNEQlBVRl9WYWdpbmEuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKcGVuaXMgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX1BlbmlzLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCm90bGV1ayA8LSByZWFkX2Z3ZignTkNEQlBVRl9PdExldWsuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQogIApvdGhlcmFjdXRlbGV1ayAgPC0gcmVhZF9md2YoJ05DREJQVUZfT3RBY0xldWsuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQogIApBTEwgIDwtIHJlYWRfZndmKCdOQ0RCUFVGX0FMeW1MZXVrLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCgojQ29tYmluZSBkYXRhIGZvciBhbGwgc3Vic2l0ZXMKZGF0IDwtIGJpbmRfcm93cyhsaXAsIG1lbGFub21hLCBza2luLCBob2RnZXh0ciwgaG9kZ25kYWwsIE5ITG5kYWwsIGJyZWFzdCwgCiAgICAgICAgICAgICAgICAgdnVsdmEsIHZhZ2luYSwgcGVuaXMsIE5ITGV4dHIsIG90bGV1aywgb3RoZXJhY3V0ZWxldWssIEFMTCkKCnJtKGxpcCwgbWVsYW5vbWEsIHNraW4sIGhvZGdleHRyLCBob2RnbmRhbCwgTkhMbmRhbCwgYnJlYXN0LCB2dWx2YSwgdmFnaW5hLCAKICAgcGVuaXMsIE5ITGV4dHIsIG90bGV1aywgb3RoZXJhY3V0ZWxldWssIEFMTCkKCnByaW1fc2l0ZV90ZXh0IDwtIGRhdGFfZnJhbWUoUFJJTUFSWV9TSVRFID0gYygKI05ITCBzaXRlcwoiQzAwMCIsIAoiQzAwMSIsIAoiQzAwMiIsIAoiQzAwMyIsIAoiQzAwNCIsIAoiQzAwNSIsIAoiQzAwNiIsIAoiQzAwOCIsCiJDMDA5IiwgCiJDMDE5IiwgCiJDMDIwIiwgCiJDMDIxIiwKIkMwMjIiLCAKIkMwMjMiLCAKIkMwMjQiLCAKIkMwMjgiLCAKIkMwMjkiLAoiQzAzMCIsCiJDMDMxIiwKIkMwMzkiLCAKIkMwNDAiLCAKIkMwNDEiLCAKIkMwNDgiLAoiQzA0OSIsIAoiQzA1MCIsIAoiQzA1MSIsIAoiQzA1MiIsIAoiQzA1OCIsIAoiQzA1OSIsCiJDMDYwIiwgCiJDMDYxIiwgCiJDMDYyIiwgCiJDMDY4IiwgCiJDMDY5IiwgCiJDMDc5IiwgIAoiQzA5OCIsCiJDMDk5IiwKIkMxMTEiLAoiQzE0MiIsCiJDMzAwIiwKIkMzNzkiLAoiQzQyMCIsCiJDNDIyIiwKIkM0MjQiLAoKI3NraW4vbWVsYW5vbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM0NDAiLCAiQzQ0MSIsICJDNDQyIiwgIkM0NDMiLCAiQzQ0NCIsICJDNDQ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM0NDYiLCAiQzQ0NyIsICJDNDQ4IiwgIkM0NDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JyZWFzdCAtIG5pcHBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzUwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdmFnaW5hL3Z1bHZhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNTEwIiwgIkM1MTEiLCAiQzUxMiIsICJDNTE4IiwgIkM1MTkiLCAiQzUyOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcGVuaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM2MDAiLCAiQzYwMSIsICJDNjAyIiwgIkM2MDgiLCAiQzYwOSIsICJDNjM5IiwKCiJDNzcwIiwKIkM3NzEiLAoiQzc3MiIsCiJDNzczIiwKIkM3NzQiLAoiQzc3NSIsCiJDNzc4IiwKIkM3NzkiKSwKClNJVEVfVEVYVCA9IGMoCiJDMDAuMCBFeHRlcm5hbCBMaXA6IFVwcGVyIE5PUyIsCiJDMDAuMSBFeHRlcm5hbCBMaXA6IExvd2VyIE5PUyIsCiJDMDAuMiBFeHRlcm5hbCBMaXA6IE5PUyIsCiJDMDAuMyBMaXA6IFVwcGVyIE11Y29zYSIsCiJDMDAuNCBMaXA6IExvd2VyIE11Y29zYSIsCiJDMDAuNSBMaXA6IE11Y29zYSBOT1MiLAoiQzAwLjYgTGlwOiBDb21taXNzdXJlIiwKIkMwMC44IExpcDogT3ZlcmxhcHBpbmciLAoiQzAwLjkgTGlwIE5PUyIsCiJDMDEuOSBUb25ndWU6IEJhc2UgTk9TIiwKIkMwMi4wIFRvbmd1ZTogRG9yc2FsIE5PUyIsCiJDMDIuMSBUb25ndWU6IEJvcmRlciwgVGlwIiwKIkMwMi4yIFRvbmd1ZTogVmVudHJhbCBOT1MiLAoiQzAyLjMgVG9uZ3VlOiBBbnRlcmlvciBOT1MiLAoiQzAyLjQgTGluZ3VhbCBUb25zaWwiLAoiQzAyLjggVG9uZ3VlOiBPdmVybGFwcGluZyIsCiJDMDIuOSBUb25ndWU6IE5PUyIsCiJDMDMuMCBHdW06IFVwcGVyIiwKIkMwMy4xIEd1bTogTG93ZXIiLAoiQzAzLjkgR3VtIE5PUyIsCiJDMDQuMCBNb3V0aDogQW50ZXJpb3IgRmxvb3IiLAoiQzA0LjEgTW91dGg6IExhdGVyYWwgRmxvb3IiLAoiQzA0LjggTW91dGg6IE92ZXJsYXBwaW5nIEZsb29yIiwKIkMwNC45IEZsb29yIG9mIE1vdXRoIE5PUyIsCiJDMDUuMCBIYXJkIFBhbGF0ZSIsCiJDMDUuMSBTb2Z0IFBhbGF0ZSBOT1MiLAoiQzA1LjIgVXZ1bGEiLAoiQzA1LjggUGFsYXRlOiBPdmVybGFwcGluZyIsCiJDMDUuOSBQYWxhdGUgTk9TIiwKIkMwNi4wIENoZWVrIE11Y29zYSIsCiJDMDYuMSBNb3V0aDogVmVzdGlidWxlIiwKIkMwNi4yIFJldHJvbW9sYXIgQXJlYSIsCiJDMDYuOCBNb3V0aDogT3RoZXIgT3ZlcmxhcHBpbmciLAoiQzA2LjkgTW91dGggTk9TIiwKIkMwNy45IFBhcm90aWQgR2xhbmQiLAogICJDMDkuOCBUb25zaWw6IE92ZXJsYXBwaW5nIiwKICAiQzA5LjkgVG9uc2lsIE5PUyIsCiAgIkMxMS4xIE5hc29waGFyeW54OiBQb3N0ZXIgV2FsbCIsIAogICJDMTQuMiBXYWxkZXllciBSaW5nIiwKICAiQzMwLjAgTmFzYWwgQ2F2aXR5IiwKICAiQzM3LjkgVGh5bXVzIiwKIkM0Mi4wIEJsb29kIiwKICAiQzQyLjIgU3BsZWVuIiwKIkM0Mi40IEhlbWF0b3BvaWV0aWMgTk9TIiwKCiAjc2tpbgoiQzQ0LjAgU2tpbiBvZiBsaXAsIE5PUyIsCiJDNDQuMSBFeWVsaWQiLAoiQzQ0LjIgRXh0ZXJuYWwgZWFyIiwKIkM0NC4zIFNraW4gb2YgZWFyIGFuZCB1bnNwZWNpZmllZCBwYXJ0cyBvZiBmYWNlIiwKIkM0NC40IFNraW4gb2Ygc2NhbHAgYW5kIG5lY2siLAoiQzQ0LjUgU2tpbiBvZiB0cnVuayIsCiJDNDQuNiBTa2luIG9mIHVwcGVyIGxpbWIgYW5kIHNob3VsZGVyIiwKIkM0NC43IFNraW4gb2YgbG93ZXIgbGltYiBhbmQgaGlwIiwKIkM0NC44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiBza2luIiwKIkM0NC45IFNraW4sIE5PUyIsIAoKI2JyZWFzdAoiQzUwLjAgTmlwcGxlIiwKCiN2dWx2YS92YWdpbmEKIkM1MS4wIExhYml1bSBtYWp1cyIsCiJDNTEuMSBMYWJpdW0gbWludXMiLAoiQzUxLjIgQ2xpdG9yaXMiLAoiQzUxLjggT3ZlcmxhcHBpbmcgbGVzaW9uIG9mIHZ1bHZhIiwKIkM1MS45IFZ1bHZhLCBOT1MiLAoiQzUyLjkgVmFnaW5hLCBOT1MiLAoKI3BlbmlzCiJDNjAuMCBQcmVwdWNlIiwKIkM2MC4xIEdsYW5zIHBlbmlzIiwKIkM2MC4yIEJvZHkgb2YgcGVuaXMiLAoiQzYwLjggT3ZlcmxhcHBpbmcgbGVzaW9uIG9mIHBlbmlzIiwKIkM2MC45IFBlbmlzIiwKIkM2My4yIFNjcm90dW0sIE5PUyIsCgogICJDNzcuMCBMeW1waCBOb2RlczogSGVhZEZhY2VOZWNrIiwKICAiQzc3LjEgSW50cmF0aG9yYWNpYyBMeW1waCBOb2RlcyIsCiAgIkM3Ny4yIEludHJhLWFiZG9taW5hbCBMeW1waE5vZGVzIiwKICAiQzc3LjMgTHltcGggTm9kZXMgb2YgYXhpbGxhIG9yIGFybSAiLAogICJDNzcuNCBMeW1waCBOb2RlczogTGVnIiwKICAiQzc3LjUgUGVsdmljIEx5bXBoIE5vZGVzIiwKICAiQzc3LjggTHltcGggTm9kZXM6IG11bHRpcGxlIHJlZ2lvbiIsCiAgIkM3Ny45IEx5bXBoIE5vZGUgTk9TIikpCgoKZGF0IDwtIG1lcmdlKGRhdCwgcHJpbV9zaXRlX3RleHQsIGJ5ID0gIlBSSU1BUllfU0lURSIsIGFsbC54ID0gVFJVRSkgCgpybShwcmltX3NpdGVfdGV4dCkKCiMgY29udmVydCBudW1lcmljIHZhcmlhYmxlcyBmcm9tIGNoYXJhY3RlciBjbGFzcyB0byBudW1lcmljIGNsYXNzCm51bV92YXJzIDwtIGMoIkFHRSIsICJDUk9XRkxZIiwgIlRVTU9SX1NJWkUiLCAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsICJEWF9SQURfU1RBUlRFRF9EQVlTIiwgICJSQURfUkVHSU9OQUxfRE9TRV9DR1kiLAogICAgICAgICAgICAgICJSQURfQk9PU1RfRE9TRV9DR1kiLCAiUkFEX0VMQVBTRURfUlhfREFZUyIsICJEWF9TWVNURU1JQ19TVEFSVEVEX0RBWVMiLCAiRFhfQ0hFTU9fU1RBUlRFRF9EQVlTIiwgCiAgICAgICAgICAgICAgIkRYX0hPUk1PTkVfU1RBUlRFRF9EQVlTIiwgIkRYX09USEVSX1NUQVJURURfREFZUyIsICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLAogICAgICAgICAgICAgICJSQURfTlVNX1RSRUFUX1ZPTCIpCgpkYXRbbnVtX3ZhcnNdIDwtIGxhcHBseShkYXRbbnVtX3ZhcnNdLCBhcy5udW1lcmljKQoKCiMgY29udmVydCBmYWN0b3IgdmFyaWFibGVzIGZyb20gY2hhcmFjdGVyIGNsYXNzIHRvIGZhY3RvciBjbGFzcwp2YXJzIDwtIG5hbWVzKGRhdCkKZmFjdF92YXJzIDwtIHZhcnNbISh2YXJzICVpbiUgbnVtX3ZhcnMpXSAjIGJhc2ljYWxseSBhbGwgb2YgdGhlIG5vbi1udW1lcmljcwoKZGF0W2ZhY3RfdmFyc10gPC0gbGFwcGx5KGRhdFtmYWN0X3ZhcnNdLCBhcy5jaGFyYWN0ZXIpCmRhdFtmYWN0X3ZhcnNdIDwtIGxhcHBseShkYXRbZmFjdF92YXJzXSwgYXMuZmFjdG9yKQoKZGF0IDwtIGRhdCAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfVFlQRV9GID0gZmN0X3JlY29kZShGQUNJTElUWV9UWVBFX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21tdW5pdHkgQ2FuY2VyIFByb2dyYW0iID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wcmVoZW5zaXZlIENvbW0gQ2EgUHJvZ3JhbSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjYWRlbWljL1Jlc2VhcmNoIFByb2dyYW0iID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlZ3JhdGVkIE5ldHdvcmsgQ2EgUHJvZ3JhbSIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShGQUNJTElUWV9MT0NBVElPTl9GID0gZmN0X3JlY29kZShGQUNJTElUWV9MT0NBVElPTl9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV3IEVuZ2xhbmQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWRkbGUgQXRsYW50aWMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCBBdGxhbnRpYyIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3QgTm9ydGggQ2VudHJhbCIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3QgU291dGggQ2VudHJhbCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgTm9ydGggQ2VudHJhbCIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgU291dGggQ2VudHJhbCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdW50YWluIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFjaWZpYyIgPSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dCBvZiBVUyIgPSAiMCIpKSAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfR0VPR1JBUEhZID0gZmN0X2NvbGxhcHNlKEZBQ0lMSVRZX0xPQ0FUSU9OX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vcnRoZWFzdCIgPSBjKCIxIiwgIjIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCIgPSBjKCIzIiwgIjciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWR3ZXN0IiA9IGMoIjQiLCAiNSIsICI2IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCIgPSBjKCI4IiwgIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShBR0VfRiA9IGN1dChBR0UsIGMoMCwgNTQsIDY0LCA3NCwgMTAwKSkpICU+JQogICAgICAgIG11dGF0ZShBR0VfNDAgPSBjdXQoQUdFLCBjKDAsIDQwLCAxMDApKSkgJT4lCiAgICAgICAgbXV0YXRlKFNFWF9GID0gZmN0X3JlY29kZShTRVgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hbGUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGZW1hbGUiID0gIjIiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJBQ0VfRiA9IGZjdF9jb2xsYXBzZShSQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGl0ZSIgPSBjKCIwMSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGFjayIgPSBjKCIwMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBc2lhbiIgPSBjKCIwNCIsICIwNSIsICIwNiIsICIwNyIsICIwOCIsICIxMCIsICIxMSIsICIxMiIsICIxMyIsICIxNCIsICIxNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE2IiwgIjE3IiwgIjIwIiwgIjIxIiwgIjIyIiwgIjI1IiwgIjI2IiwgIjI3IiwgIjI4IiwgIjMwIiwgIjMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMzIiLCAiOTYiLCAiOTciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIvVW5rIiA9IGMoIjAzIiwgIjk4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSElTUEFOSUMgPSBmY3RfY29sbGFwc2UoU1BBTklTSF9ISVNQQU5JQ19PUklHSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9IGMoIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShJTlNVUkFOQ0VfRiA9IGZjdF9yZWNvZGUoSU5TVVJBTkNFX1NUQVRVUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaXZhdGUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZWRpY2FpZCIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lZGljYXJlIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIgR292ZXJubWVudCIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKElOU1VSQU5DRV9GID0gZmN0X3JlbGV2ZWwoSU5TVVJBTkNFX0YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaXZhdGUiKSkgJT4lCiAgICAgICAgbXV0YXRlKElOQ09NRV9GID0gZmN0X3JlY29kZShNRURfSU5DX1FVQVJfMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiAkMzgsMDAwIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDM4LDAwMCAtICQ0Nyw5OTkiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkNDgsMDAwIC0gJDYyLDk5OSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQ2MywwMDAgKyIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoRURVQ0FUSU9OX0YgPSBmY3RfcmVjb2RlKE5PX0hTRF9RVUFSXzEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIxJSBvciBtb3JlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMyAtIDIwLjklIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI3IC0gMTIuOSUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiA3JSIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoVV9SX0YgPSBmY3RfY29sbGFwc2UoVVJfQ0RfMTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXRybyIgPSBjKCIxIiwgIjIiLCAiMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXJiYW4iID0gYygiNCIsICI1IiwgIjYiLCAiNyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVyYWwiID0gYygiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoQ0xBU1NfT0ZfQ0FTRV9GID0gZmN0X2NvbGxhcHNlKENMQVNTX09GX0NBU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxfUGFydF9QcmltID0gYygiMTAiLCAiMTEiLCAiMTIiLCAiMTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE0IiwgIjIwIiwgIjIxIiwgIjIyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcl9GYWNpbGl0eSA9IGMoIjAwIikpKSAlPiUKICAgICAgICBtdXRhdGUoR1JBREVfRiA9IGZjdF9yZWNvZGUoR1JBREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSTogV2VsbCBEaWZmIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJSTogTW9kIERpZmYiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIElJSTogUG9vciBEaWZmIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJVjogVW5kaWZmL0FuYXBsYXN0aWMiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5BL1Vua293biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0YgPSBmY3RfaW5mcmVxKEhJU1RPTE9HWSkpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRiA9IGZhY3RvcihISVNUT0xPR1lfRikpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRl9MSU0gPSBmY3RfbHVtcChISVNUT0xPR1lfRiwgcHJvcCA9IDAuMDUpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fVCA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1QgPSBmY3RfcmVsZXZlbChUTk1fQ0xJTl9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX04gPSBmY3RfcmVjb2RlKFROTV9DTElOX04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9NID0gZmN0X3JlY29kZShUTk1fQ0xJTl9NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfVCA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1QgPSBmY3RfcmVsZXZlbChUTk1fUEFUSF9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX04gPSBmY3RfcmVjb2RlKFROTV9QQVRIX04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9NID0gZmN0X3JlY29kZShUTk1fUEFUSF9NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fU1RBR0VfR1JPVVAgPSBmY3RfcmVjb2RlKFROTV9DTElOX1NUQUdFX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfU1RBR0VfR1JPVVAgPSBmY3RfcmVjb2RlKFROTV9QQVRIX1NUQUdFX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoTUFSR0lOUyA9IGZjdF9yZWNvZGUoUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmVzaWR1YWwiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVzaWR1YWwsIE5PUyIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWNyb3Njb3BpYyBSZXNpZCIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWNyb3Njb3BpYyBSZXNpZCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3QgZXZhbHVhYmxlIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmciID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoTUFSR0lOU19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIxIiwgIjIiLCAiMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcvVW5rL05BIiA9IGMoIjciLCAiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoUkVBRE1fSE9TUF8zMF9EQVlTX0YgPSBmY3RfcmVjb2RlKFJFQURNX0hPU1BfMzBfREFZUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb19TdXJnX29yX05vX1JlYWRtaXQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVucGxhbl9SZWFkbWl0X1NhbWUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsYW5fUmVhZG1pdF9TYW1lIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFuVW5wbGFuX1NhbWUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJYX1NVTU1fUkFESUFUSU9OX0YgPSBmY3RfcmVjb2RlKFJYX1NVTU1fUkFESUFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZWFtIFJhZGlhdGlvbiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpb2FjdGl2ZSBJbXBsYW50cyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpb2lzb3RvcGVzIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJlYW0gKyBJbXAgb3IgSXNvdG9wZXMiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaWF0aW9uLCBOT1MiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUFVGXzMwX0RBWV9NT1JUX0NEX0YgPSBmY3RfcmVjb2RlKFBVRl8zMF9EQVlfTU9SVF9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGl2ZV8zMCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhZF8zMCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUFVGXzkwX0RBWV9NT1JUX0NEX0YgPSBmY3RfcmVjb2RlKFBVRl85MF9EQVlfTU9SVF9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGl2ZV85MCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhZF85MCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiA9IGZjdF9yZWNvZGUoTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZWdfTHltcGhWYXNjX0ludiIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb3NfTHVtcGhWYXNjX0ludiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GID0gZmN0X3JlY29kZShSWF9IT1NQX1NVUkdfQVBQUl8yMDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb19TdXJnIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ib3RfQXNzaXN0IiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ib3RfdG9fT3BlbiIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVuZG9fTGFwIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5kb19MYXBfdG9fT3BlbiIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5fVW5rbm93biIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEFsbCA9ICJBbGwiKSAlPiUKICAgICAgICBtdXRhdGUoQWxsID0gZmFjdG9yKEFsbCkpICU+JQogICAgICAgIG11dGF0ZShSRUFTT05fRk9SX05PX1NVUkdFUllfRiA9IGZjdF9yZWNvZGUoUkVBU09OX0ZPUl9OT19TVVJHRVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcGVyZm9ybWVkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIG5vdCByZWNvbW1lbmRlZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZyBkdWUgdG8gcHQgZmFjdG9ycyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZywgcHQgZGllZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIG5vdCBkb25lIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHJlYywgcHQgcmVmdXNlZCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIHVuayBpZiBkb25lIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShTVVJHRVJZX1lOID0gaWZlbHNlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSA9PSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1RGID0gY2FzZV93aGVuKFNVUkdFUllfWU4gPT0gIlllcyIgfiBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUkdFUllfWU4gPT0gIk5vIiB+IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQSkpICAlPiUKICAgICAgICBtdXRhdGUoUkVBU09OX0ZPUl9OT19SQURJQVRJT05fRiA9IGZjdF9yZWNvZGUoUkVBU09OX0ZPUl9OT19SQURJQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHBlcmZvcm1lZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIG5vdCByZWNvbW1lbmRlZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmFkIGR1ZSB0byBwdCBmYWN0b3JzIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBSYWQsIHB0IGRpZWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCByZWMsIG5vdCBkb25lIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCBwdCByZWZ1c2VkIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCB1bmsgaWYgZG9uZSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUkFESUFUSU9OX1lOID0gaWZlbHNlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkVBU09OX0ZPUl9OT19SQURJQVRJT04gPT0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR1JBRF9TRVFfRiA9IGZjdF9yZWNvZGUoUlhfU1VNTV9TVVJHUkFEX1NFUSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgb3IgU3VyZyBvciBSYWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBTdXJnIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgYmVmb3JlIFJhZCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludHJhb3AgUmFkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludHJhb3AgUmFkIHBsdXMgb3RoZXIiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRID0gaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFRyZWF0bWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVEgPSBmY3RfcmVsZXZlbChTVVJHX1JBRF9TRVEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIEFsb25lIikpICU+JQogICAgICAgIG11dGF0ZShDSEVNT19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX0NIRU1PLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMDAiLCAiODIiLCAiODUiLCAiODYiLCAiODciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIwMSIsICIwMiIsICIwMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiA9IGMoIjg4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSU1NVU5PX1lOID0gZmN0X2NvbGxhcHNlKFJYX1NVTU1fSU1NVU5PVEhFUkFQWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAwIiwgIjgyIiwgIjg1IiwgIjg2IiwgIjg3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMDEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVrbiIgPSBjKCI4OCIsICI5OSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUV9DID0gaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZywgTm8gcmFkLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkFESUFUSU9OX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQsIE5vIFN1cmcsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBTdXJnLCBObyBSYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjIiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMyIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkLCBObyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmcsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnLCBObyByYWQsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCwgTm8gU3VyZywgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJObyIgJiBSQURJQVRJT05fWU4gPT0gIk5vIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFN1cmcsIE5vIFJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCB0aGVuIFN1cmcsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQsIFllcyBDaGVtbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiNCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZywgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIiKSkpKSkpKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRX0MgPSBmY3RfaW5mcmVxKFNVUkdfUkFEX1NFUV9DKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGFzLm51bWVyaWMoVFVNT1JfU0laRSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBpZmVsc2UoVF9TSVpFID09IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFR1bW9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID4gMCAmIFRfU0laRSA8IDEwIHwgVF9TSVpFID09IDk5MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwgMSBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gMTAgJiBUX1NJWkUgPCAyMCB8IFRfU0laRSA9PSA5OTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMS0yIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gMjAgJiBUX1NJWkUgPCAzMCB8IFRfU0laRSA9PSA5OTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjItMyBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAzMCAmIFRfU0laRSA8IDQwIHwgVF9TSVpFID09IDk5NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjMtNCBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gNDAgJiBUX1NJWkUgPCA1MCB8IFRfU0laRSA9PSA5OTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNC01IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPj0gNTAgJiBUX1NJWkUgPCA2MCB8IFRfU0laRSA9PSA5OTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjUtNiBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA2MCAmIFRfU0laRSA8PSA5ODcgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfU0laRSA9PSA5ODAgfCBUX1NJWkUgPT0gOTg5IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUX1NJWkUgPT0gOTk3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI+NiBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA9PSA5ODggfCBUX1NJWkUgPT0gOTk5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTkFfdW5rIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pY3Jvc2NvcGljIGZvY3VzIikpKSkpKSkpKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGZhY3RvcihUX1NJWkUpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gZmN0X3JlbGV2ZWwoVF9TSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFR1bW9yIiwgIk1pY3Jvc2NvcGljIGZvY3VzIiwgIjwgMSBjbSIsICIxLTIgY20iLCAiMi0zIGNtIiwgIjMtNCBjbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0LTUgY20iLCAiNS02IGNtIiwgIj42IGNtIiwgIk5BX3VuayIpKSAlPiUKICAgICAgICBtdXRhdGUobWV0c19hdF9keCA9IGNhc2Vfd2hlbihDU19NRVRTX0RYX0xVTkcgPT0gIjEiIH4gIkx1bmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTX01FVFNfRFhfQk9ORSA9PSAiMSIgfiAiQm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9CUkFJTiA9PSAiMSIgfiAiQnJhaW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTX01FVFNfRFhfTElWRVIgPT0gIjEiIH4gIkxpdmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gIk5vbmUvT3RoZXIvVW5rL05BIikpICU+JQogICAgICAgIG11dGF0ZShNRURJQ0FJRF9FWFBOX0NPREUgPSBmY3RfcmVjb2RlKE1FRElDQUlEX0VYUE5fQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uLUV4cGFuc2lvbiBTdGF0ZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxhdGUgRXhwYW5zaW9uIFN0YXRlcyAoPiBKYW4gMjAxNCkiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXBwcmVzc2VkIGZvciBBZ2VzIDAgLSAzOSIgPSAiOSIpKSAgJT4lCiAgICAgICAgbXV0YXRlKEVYUE5fR1JPVVAgPSAgY2FzZV93aGVuKE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJKYW4gMjAxNCBFeHBhbnNpb24gU3RhdGVzIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTQiLCAiMjAxNSIpIH4gIlBvc3QtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJKYW4gMjAxNCBFeHBhbnNpb24gU3RhdGVzIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCIyMDA0IiwgIjIwMDUiLCAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMjAwOSIsICIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIikgfiAiUHJlLUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIsICIyMDE0IiwgIjIwMTUiKSB+ICJQb3N0LUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIikgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsICIyMDA5IikgfiAiUHJlLUV4cGFuc2lvbiIsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgJWluJSBjKCJOb24tRXhwYW5zaW9uIFN0YXRlIikgfiAiUHJlLUV4cGFuc2lvbiIsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgJWluJSBjKCJMYXRlIEV4cGFuc2lvbiBTdGF0ZXMgKD4gSmFuIDIwMTQpIikgfiAiUHJlLUV4cGFuc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIkxhdGUgRXhwYW5zaW9uIFN0YXRlcyAoPiBKYW4gMjAxNCkiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDE0IiwgIjIwMTUiKSB+ICJFeGNsdWRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSA9PSAiU3VwcHJlc3NlZCBmb3IgQWdlcyAwIC0gMzkiIH4gIkV4Y2x1ZGUiKSkgJT4lCiAgCiAgbXV0YXRlKHByZV8yMDE0ID0gWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDA0IiwgIjIwMDUiLCAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMjAwOSIsICIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIikpICU+JQogIAogIG11dGF0ZShtZXRzX2F0X2R4X0YgPSBpZmVsc2UobWV0c19hdF9keCA9PSAiTm9uZS9PdGhlci9VbmsvTkEiLCBGQUxTRSwgVFJVRSkpICU+JSAKICAKICBtdXRhdGUoVHhfWU4gPSBpZmVsc2UoU1VSR19SQURfU0VRID09ICJObyBUcmVhdG1lbnQiICYgQ0hFTU9fWU4gPT0gIk5vIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgIElNTVVOT19ZTiA9PSAiTm8iLCBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShDSEVNT19ZTiA9PSAiVWtuIiwgTkEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSkpKQoKZmFjdF92YXJzXzIgPC0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiQUdFX0YiLCAiU0VYX0YiLCAiUkFDRV9GIiwKICAgICAgICAgICAgICAgICAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLAogICAgICAgICAgICAgICAgICJDRENDX1RPVEFMX0JFU1QiLCAiQ0xBU1NfT0ZfQ0FTRV9GIiwgIllFQVJfT0ZfRElBR05PU0lTIiwgIlBSSU1BUllfU0lURSIsICJISVNUT0xPR1kiLAogICAgICAgICAgICAgICAgICJCRUhBVklPUiIsICJHUkFERV9GIiwgIlROTV9DTElOX1QiLCAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwKICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLCAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLAogICAgICAgICAgICAgICAgICJNQVJHSU5TIiwgIlJFQURNX0hPU1BfMzBfREFZU19GIiwgIlJYX1NVTU1fUkFESUFUSU9OX0YiLCAiUFVGXzMwX0RBWV9NT1JUX0NEX0YiLAogICAgICAgICAgICAgICAgICJQVUZfOTBfREFZX01PUlRfQ0RfRiIsICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsICJtZXRzX2F0X2R4IikKCgpkYXQgPC0gZGF0ICU+JQogICAgICAgIG11dGF0ZV9hdChmYWN0X3ZhcnNfMiwgZnVucyhmYWN0b3IoLikpKQoKYGBgCgoKIyBFeHRyYWN0IERhdGEgb2YgSW50ZXJlc3QKCmBgYHtyfQoKCiMgTm9uLUhvZGdraW4gTHltcGhvbWEgU2l0ZXMKc2l0ZV9jb2RlIDwtIGMoIAojYWRkaXRpb25hbCBzaXRlcwoKICNsaXAgIAogICJDMDAwIiwgIkMwMDEiLCAiQzAwMiIsICJDMDAzIiwgIkMwMDQiLCAiQzAwNSIsIkMwMDYiLCAiQzAwOCIsIkMwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojc2tpbi9tZWxhbm9tYQogICJDNDQwIiwgIkM0NDEiLCAiQzQ0MiIsICJDNDQzIiwgIkM0NDQiLCAiQzQ0NSIsICJDNDQ2IiwgIkM0NDciLCAiQzQ0OCIsICJDNDQ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjYnJlYXN0IC0gbmlwcGxlCiAgIkM1MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3ZhZ2luYS92dWx2YQogICJDNTEwIiwgIkM1MTEiLCAiQzUxMiIsICJDNTE4IiwgIkM1MTkiLCAiQzUyOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojcGVuaXMKICJDNjAwIiwgIkM2MDEiLCAiQzYwMiIsICJDNjA4IiwgIkM2MDkiLCAiQzYzOSIpCgojbXljb3NpcyBmdW5nb2lkZXMsIFNlemFyeSBzeW5kcm9tZSwgc3ViY3V0YW5lb3VzIHBhbm5pY3VsaXRpcy1saWtlIFQtY2VsbCBseW1waG9tYSwKI2N1dGFuZW91cyBULWNlbGwgbHltcGhvbWEsIE5PUywgcHJpbWFyeSBjdXRhbmVvdXMgQ0QzMCtULWNlbGwgbHltcGhvbWEsIAojTksvVC1jZWxsIGx5bXBob21hLCBwcmltYXJ5IGN1dGFuZW91cyBnYW1tYS1kZWx0YSBULWNlbGwgbHltcGhvbWEsIAojYW5kIGJsYXN0aWMgTksgY2VsbCBseW1waG9tYSwgcmVzcGVjdGl2ZWx5CgojIjk3MDAiID0gTXljb3NpcyBGdW5nb2lkZXMKICAjIHBhZ2V0b2lkIHJldGljdWxvc2lzCgojIjk3MDEiID0gU2V6YXJ5IFN5bmRyb21lCiAgIyBTZXphcnkgZGlzZWFzZQoKIyI5NzA4IiA9IFN1YmN1dGFuZW91cyBwYW5uaWN1bGl0aXNsaWtlIFQtY2VsbCBseW1waG9tYQoKIyI5NzA5IiA9IEN1dGFuZW91cyBULWNlbGwgbHltcGhvbWEsIE5PUyAKICAjIEN1dGFuZW91cyBseW1waG9tYSwgTk9TIChDNDQuXyk7IFByaW1hcnkgY3V0YW5lb3VzIENENC1wb3NpdGl2ZSBzbWFsbC9tZWRpdW0KICAjIFQtY2VsbCBseW1waG9tYTsgUHJpbWFyeSBjdXRhbmVvdXMgQ0Q4LXBvc2l0aXZlIGFnZ3Jlc3NpdmUKICAjIGVwaWRlcm1vdHJvcGljIGN5dG90b3hpYyBULWNlbGwgbHltcGhvbWEKCiMiOTcxOCIgPSBQcmltYXJ5IGN1dGFuZW91cyBDRDMwKyBULWNlbGwgbHltcGhvcHJvbGlmZXJhdGl2ZSBkaXNvcmRlciAKICAjIEx5bXBob21hdG9pZCBwYXB1bG9zaXMgKEM0NC5fKSwgUHJpbWFyeSBjdXRhbmVvdXMgYW5hcGxhc3RpYyBsYXJnZSBjZWxsLAogICMgbHltcGhvbWEgKEM0NC5fKSwgUHJpbWFyeSBjdXRhbmVvdXMgQ0QzMCsgbGFyZ2UgVC1jZWxsIGx5bXBob21hIChDNDQuXykKCgojIjk3MjYiID0gUHJpbWFyeSBjdXRhbmVvdXMgZ2FtbWEtZGVsdGEgVC1jZWxsIGx5bXBob21hCgpoaXN0b19jb2RlIDwtIGMoIjk3MTgiKQoKYmVoYXZpb3JfY29kZSA8LSBjKCIzIikKCmRhdGEgPC0gZGF0ICU+JQogICAgICAgIGZpbHRlcihCRUhBVklPUiAlaW4lIGJlaGF2aW9yX2NvZGUpICU+JQogICAgICAgIGZpbHRlcihQUklNQVJZX1NJVEUgJWluJSBzaXRlX2NvZGUpICU+JQogICAgICAgIGZpbHRlcihISVNUT0xPR1kgJWluJSBoaXN0b19jb2RlKSAlPiUKICAgICAgICAjZmlsdGVyKEFHRSA+PSAxOCkgJT4lCiAgICAgICAgZmlsdGVyKGlzLm5hKFBVRl9WSVRBTF9TVEFUVVMpID09IEZBTFNFKSAlPiUKICAgICAgICBmaWx0ZXIoaXMubmEoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTKSA9PSBGQUxTRSkgICU+JQogICAgICAgIGZpbHRlcihTRVFVRU5DRV9OVU1CRVIgPT0gIjAwIikgCgojZmlsZV9wYXRoIDwtIGMoIi9Vc2Vycy9iZWFzdGF0bGlmZS9Hb29nbGUgRHJpdmUvUGVubi9SZXNlYXJjaC9CYXJiaWVyaS9OQ0RCIikKI3NhdmUoZGF0YSwKIyAgICAgIGZpbGUgPSBwYXN0ZTAoZmlsZV9wYXRoLCAiL0NUQ0xfZGF0YS5SZGEiKSkKYGBgCgpgYGB7ciBsb2FkRGF0YX0KI2xvYWQoIk1GX2RhdGEuUmRhIikKYGBgCgoKRGF0YSBpbmNsdWRpbmcgc2tpbiB0dW1vcnMgd2FzIG9idGFpbmVkIGZyb20gdGhlIE5DQkQgb24gT2N0b2JlciA3LCAyMDE5LiBDYXNlcyB0aGF0IHdlcmUgaW5jbHVkZWQgaW4gdGhpcyBhbmFseXNpcyB3ZXJlIHRob3NlIHdpdGg6CgoxLiBTaXRlIGNvZGVzOiBgciBzaXRlX2NvZGVgCjIuIEhpc3RvbG9neSBjb2RlczogYHIgaGlzdG9fY29kZWAKMy4gQmVoYXZpb3IgY29kZXM6IGByIGJlaGF2aW9yX2NvZGVgCgoKUGF0aWVudHMgd2VyZSBleGNsdWRlZCBpZiB0aGV5IGRpZG4ndCBoYXZlIHZhbHVlcyBmb3IgZWl0aGVyIGZvbGxvdyB1cCBvciB2aXRhbCBzdGF0dXMuCgpQYXRpZW50cyB3ZXJlIGV4Y2x1ZGVkIGlmIHRoZXkgaGFkIHN1cmdlcnkgdG8gYSBkaXN0YW50IHNpdGUgdXNpbmcgYFJYX1NVTU1fU1VSR19PVEhfUkVHRElTYC4gVGhpcyB3YXMgZG9uZSB0byBhdm9pZCBjb25mb3VuZGluZyBvZiBkaWZmZXJlbnQgc3VyZ2ljYWwgcHJvY2VkdXJlcy4gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBzdXJnZXJ5IGF0IHRoZSBwcmltYXJ5IHNpdGUuIFRoZXNlIGRpc3RhbnQgc2l0ZSBzdXJnZXJpZXMgd2VyZSBiZWluZyBjb3VudGVkIGluIHRoZSBzdXJnZXJ5L3JhZGlhdGlvbiBzZXF1ZW5jZSBhbmQgdGh1cyB0byBzaW1wbGlmeSBhbmFseXNpcyB0aGV5IHdlcmUgcmVtb3ZlZC4gCgpgYGB7cn0KCmRhdGEgJT4lCiAgICAgICAgQ3JlYXRlVGFibGVPbmUoZGF0YSA9IC4sCiAgICAgICAgICAgICAgICAgICAgIHZhcnMgPSBjKCJSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyIpLAogICAgICAgICAgICAgICAgICAgICBpbmNsdWRlTkEgPSBUUlVFKSAlPiUKICAgICAgICBwcmludCguLAogICAgICAgICAgICAgIHNob3dBbGxMZXZlbHMgPSBUUlVFKQoKZGF0YSA8LSBkYXRhICU+JQogICAgICAgIGZpbHRlcihSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyA9PSAiMCIpIApgYGAKCgpSYWNlIHdhcyBncm91cGVkIGFzIHdoaXRlLCBibGFjaywgYXNpYW4sIG90aGVyL3Vua25vd24KU3RhZ2Ugd2FzIGdyb3VwZWQgaW50byAwLCBJLCBJSSwgSUlJLCBJViwgTkFfVW5rbm93biwgc3RhZ2UgMCB3YXMgcmVtb3ZlZApXaGV0aGVyIHN1cmdlcnkgd2FzIHBlcmZvcm1lZCB3YXMgYmFzZWQgb24gdGhlIGBSRUFTT05fRk9SX05PX1NVUkdFUllgIHZhcmlhYmxlLiBUaGUgYFNVUkdFUllfWU5gIHZhcmlhYmxlIHdhcyBjbGFzc2lmaWVkIGFzICdZZXMnLCAnTm8nLCBvciAnVW5rbm93bicuCgoKV2hldGhlciByYWRpYXRpb24gd2FzIHBlcmZvcm1lZCB3YXMgYmFzZWQgb24gdGhlIGBSRUFTT05fRk9SX05PX1JBRElBVElPTmAgdmFyaWFibGUuIFRoZSBgUkFESUFUSU9OX1lOYCB2YXJpYWJsZSB3YXMgY2xhc3NpZmllZCBhcyAnWWVzJywgJ05vJywgb3IgJ1Vua25vd24nLgoKCgojVGFibGUgb2YgdmFyaWFibGVzIGZvciBhbGwgY2FzZXM6CgpgYGB7cn0KZGF0YSA8LSBkYXRhICU+JSBkcm9wbGV2ZWxzKCkKCnBfdGFibGUoZGF0YSwKICAgICAgICB2YXJzID0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiRkFDSUxJVFlfR0VPR1JBUEhZIiwgICJBR0UiLCAiQUdFX0YiLCAiQUdFXzQwIiwKICAgICAgICAgICAgICAgICAiU0VYX0YiLCAiUkFDRV9GIiwgIkhJU1BBTklDIiwgIklOU1VSQU5DRV9GIiwgCiAgICAgICAgICAgICAgICAgIklOQ09NRV9GIiwgIkVEVUNBVElPTl9GIiwgIlVfUl9GIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwKICAgICAgICAgICAgICAgICAiU0lURV9URVhUIiwgICJISVNUT0xPR1kiLCAiQkVIQVZJT1IiLCAiR1JBREVfRiIsIAogICAgICAgICAgICAgICAgICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiTUFSR0lOUyIsICJNQVJHSU5TX1lOIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLAogICAgICAgICAgICAgICAgICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgCiAgICAgICAgICAgICAgICAgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIlNVUkdfUkFEX1NFUSIsCiAgICAgICAgICAgICAgICAgIlNVUkdfUkFEX1NFUV9DIiwgIlNVUkdFUllfWU4iLCAiUkFESUFUSU9OX1lOIiwgIkNIRU1PX1lOIiwgIklNTVVOT19ZTiIsICJUeF9ZTiIsICJtZXRzX2F0X2R4IiwKICAgICAgICAgICAgICAgICAiTUVESUNBSURfRVhQTl9DT0RFIiwgIkVYUE5fR1JPVVAiLCAiWUVBUl9PRl9ESUFHTk9TSVMiKSkKYGBgCgoKCmBgYHtyfQoKcHJlRXhwTWVkaWNhcmUgIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iICYgSU5TVVJBTkNFX0YgPT0gIk1lZGljYXJlIikpCnBvc3RFeHBNZWRpY2FyZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIgJiBJTlNVUkFOQ0VfRiA9PSAiTWVkaWNhcmUiKSkKCiMgcCA9IDAuMjUgd2hlbiBjb21wYXJpbmcgY2hhbmdlIGluIHByb3BvcnRpb24gb2YgcGF0aWVudHMgd2l0aCBNZWRpY2FyZSBiZWZvcmUgYW5kIGFmdGVyIEFDQSBleHBhbnNpb24KcHJvcC50ZXN0KGMocHJlRXhwTWVkaWNhcmUsIHBvc3RFeHBNZWRpY2FyZSksIAogICAgICAgICAgYyhucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQcmUtRXhwYW5zaW9uIikpLCBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIpKSkpCgpwcmVFeHBOb0luc3VyYW5jZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQcmUtRXhwYW5zaW9uIikgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKElOU1VSQU5DRV9GID09ICJOb25lIikpCnBvc3RFeHBOb0luc3VyYW5jZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIpICU+JSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoSU5TVVJBTkNFX0YgPT0gIk5vbmUiKSkKCiMgU2lnbmlmaWNhbnQgZGVjcmVhc2UgaW4gdGhlIG92ZXJhbGwgcHJvcG9ydGlvbiBvZiBwYXRpZW50cyB3aXRob3V0IGluc3VyYW5jZSBhZnRlciBBQ0EgZXhwYW5zaW9uIApwcm9wLnRlc3QoYyhwcmVFeHBOb0luc3VyYW5jZSwgcG9zdEV4cE5vSW5zdXJhbmNlKSwgCiAgICAgICAgICBjKG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSksIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikpKSkKCnBfdGFibGUobm9fRXhjbHVkZXMsIHN0cmF0YSA9ICJFWFBOX0dST1VQIiwgdmFycyA9ICJEWF9SWF9TVEFSVEVEX0RBWVMiKQoKZGF0YSA8LSBkYXRhICU+JSBtdXRhdGUoSW5zdXJlZCA9IElOU1VSQU5DRV9GICE9ICJVbmtub3duIikKCmBgYAoKCgoKI0thcGxhbiBNZWllciBBbmFseXNpcwoKCiMjQWxsCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJBbGwiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBUeXBlCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX1RZUEVfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IExvY2F0aW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJGQUNJTElUWV9MT0NBVElPTl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgR2VvZ3JhcGh5CgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJGQUNJTElUWV9HRU9HUkFQSFkiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNBZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkFHRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQWdlIEdyb3VwCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkFHRV80MCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0dlbmRlcgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU0VYX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSQUNFX0YKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJBQ0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0hpc3BhbmljCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJISVNQQU5JQyIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0luc3VyYW5jZSBTdGF0dXMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIklOU1VSQU5DRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjT3ZlcmFsbCBTdXJ2aXZhbCBwcmUvcG9zdC1BQ0EgZXhwYW5zaW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJFWFBOX0dST1VQIiwgZGF0YV9pbXAgPSBub19FeGNsdWRlcykKYGBgCgoKPCEtLSAjI0luY29tZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIGNsYXNzKGRhdGEkSU5DT01FX0YpIC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiSU5DT01FX0YiLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiMjRWR1Y2F0aW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJFRFVDQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1VyYmFuL1J1cmFsCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJVX1JfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsYXNzICh0cmVhdG1lbnQgYXQgcGVyZm9ybWluZyBmYWNpbGl0eSkKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNMQVNTX09GX0NBU0VfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1llYXIKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIllFQVJfT0ZfRElBR05PU0lTIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUHJpbWFyeSBTaXRlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTSVRFX1RFWFQiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjSGlzdG9sb2d5CgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiSElTVE9MT0dZX0ZfTElNIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCjwhLS0gIyNCZWhhdmlvciAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiQkVIQVZJT1IiLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiMjR3JhZGUKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJHUkFERV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgVCBTdGFnZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsaW5pY2FsIE4gU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKPCEtLSAjI0NsaW5pY2FsIE0gU3RhZ2UgLS0+Cgo8IS0tIGBgYHtyfSAtLT4KPCEtLSB1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX00iLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiMjQ2xpbmljYWwgU3RhZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX1NUQUdFX0dST1VQIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBUIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9UIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBOIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9OIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBNIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBTdGFnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIk1BUkdJTlMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zIFllcy9ObwpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiTUFSR0lOU19ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojIzMwIERheSBSZWFkbWlzc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gVHlwZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfU1VNTV9SQURJQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNMeW1waG92YXNjdWxhciBJbnZhc2lvbgoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNFbmRvc2NvcGljL1JvYm90aWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1N1cmdlcnkgUmFkaWF0aW9uIFNlcXVlbmNlIAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR19SQURfU0VRIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNVUkdFUllfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gWWVzL05vCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSQURJQVRJT05fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDaGVtbyBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNIRU1PX1lOIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI1RyZWF0bWVudCBZZXMvTm8KYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVHhfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNZXRhc3Rhc2VzIGF0IER4CmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIm1ldHNfYXRfZHhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjVHVtb3IgU2l6ZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiVF9TSVpFIiwgZGF0YV9pbXAgPSBkYXRhKSAtLT4KPCEtLSBgYGAgLS0+CgojVHVtb3Igc3BlY2lmaWMgVmFyaWFibGVzCgoKIyMjTm9kZSBTaXplCgoKI0NveCBQcm9wb3J0aW9uYWwgSGF6YXJkIFJhdGlvCgojI01vZGVsICMxCgojIyNGdWxsIGFuYWx5c2lzCgpgYGB7cn0KbW9kZWxfb25lIDwtIGNveHBoKFN1cnYoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTLCBQVUZfVklUQUxfU1RBVFVTID09IDApCiAgICAgICAgICAgICAgICAgICAgIH4gU1VSR19SQURfU0VRICsgSU5TVVJBTkNFX0YgKyBBR0UgKyBTRVhfRiArIFJBQ0VfRiArIElOQ09NRV9GICsgVV9SX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GLAogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSkKbW9kZWxfb25lICU+JSBzdW1tYXJ5KCkKCgpgYGAKCiMjI1N1bW1hcnkgb2YgTW9kZWwKCmBgYHtyfQptb2RlbF9vbmUgJT4lCiAgICAgICAgdGlkeSguLCBleHBvbmVudGlhdGUgPSBUUlVFKSAlPiUKICAgICAgICBzZWxlY3QodGVybSwgZXN0aW1hdGUsIGNvbmYubG93LCBjb25mLmhpZ2gsIHAudmFsdWUpICU+JQogICAgICAgIHJlbmFtZShWYXJpYWJsZSA9IHRlcm0sCiAgICAgICAgICAgICAgIEhhemFyZF9SYXRpbyA9IGVzdGltYXRlKSAlPiUKICAgICAgICB0YmxfZGYgJT4lCiAgICAgICAgcHJpbnQobiA9IG5yb3coLikpCgpgYGAKCiMjIExpbmVhciBSZWdyZXNzaW9uIApgYGB7cn0KCiNvbmx5IGluY2x1ZGUgcm93cyB3aXRoIGtub3duIHRyZWF0bWVudCBpbmZvcm1hdGlvbiwgbiA9IDgyCmRhdGEyIDwtIGRhdGEgJT4lIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iICYgUkFESUFUSU9OX1lOICE9ICJVa24iCiAgICAgICAgICAgICAgICAgICAgICAgICAmIENIRU1PX1lOICE9ICJVa24iKQoKIyBpbmNsdWRlIG9ubHkgdmFyaWFibGVzIHdpdGggZGF0YSBhdmFpbGFibGUgZm9yIGF0IGxlYXN0IDc1JSBjYXNlcyAKIyBmcm9tIHRoZSBmb2xsb3dpbmcgc2V0IG9mIHZhcmlhYmxlcyBvZiBpbnRlcmVzdDoKCiMjIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0dFT0dSQVBIWSArIENST1dGTFkgKyAKIyMgICAgICAgICAgICAgICAgIERYX1NUQUdJTkdfUFJPQ19EQVlTICsgCiMjICAgICAgICAgICAgICAgICBDSEVNT19ZTiArIFJBRElBVElPTl9ZTiArIFNVUkdFUllfWU4gKyBJTU1VTk9fWU4gKwojIyAgICAgICAgICAgICAgICAgQUdFICsgU0VYX0YgKyBSQUNFX0YgKyBISVNQQU5JQyArIElOU1VSQU5DRV9GICsgSU5DT01FX0YgKyAKIyMgICAgICAgICAgICAgICAgIEVEVUNBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMgKyBTSVRFX1RFWFQgKyBHUkFERV9GCgpsZW5ndGgod2hpY2goaXMubmEoZGF0YTIkRkFDSUxJVFlfTE9DQVRJT05fRikpKQoKIyBleGNsdWRlZCB0aGUgZm9sbG93aW5nIGluIHRoaXMgYW5hbHlzaXMgZHVlIHRvIG1pc3NpbmcgZGF0YTogCiMgIERYX1NUQUdJTkdfUFJPQ19EQVlTCgpmaXRfc3VydiA8LSBsbShEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMgfgogICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIAogICAgICAgICAgICAgICAgIENIRU1PX1lOICsgUkFESUFUSU9OX1lOICsgU1VSR0VSWV9ZTiArIElNTVVOT19ZTiArCiAgICAgICAgICAgICAgICAgQUdFICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArIElOQ09NRV9GICsgCiAgICAgICAgICAgICAgICAgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUyArIFNJVEVfVEVYVCArIEdSQURFX0YsCiAgIGRhdGEgPSBkYXRhMikKCnN1bW1hcnkoZml0X3N1cnYpICMgUl4yID0gMC4zMjQ3LCBwIDwgMi4yZS0xNgoKIyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyB3ZXJlIGV4Y2x1ZGVkIHRvIAojIGltcHJvdmUgdGhlIFItc3F1YXJlZCBvZiB0aGUgcmVncmVzc2lvbiAoaW5pdGlhbGx5IFJeMiA9ICk6CiMgU0lURV9URVhULCBGQUNJTElUWV9HRU9HUkFQSFkvTE9DQVRJT04sIENST1dGTFksIEhJU1BBTklDCmBgYAoKIyBQcmVkaWN0aW9uIExvZ2lzdGljIFJlZ3Jlc3Npb24gTW9kZWxzCgojIyBTdXJnZXJ5CmBgYHtyfQoKbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iKSAlPiUgCiAgZHJvcGxldmVscygpICU+JSAKICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGFzLmxvZ2ljYWwoU1VSR0VSWV9ZTikpCgpmaXRfc3VyZyA8LSBnbG0oU1VSR19URiB+IEFHRV9GICsgUFJJTUFSWV9TSVRFICsgR1JBREVfRiArIFNFWF9GICsgUkFDRV9GICsgSU5TVVJBTkNFX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCArIFlFQVJfT0ZfRElBR05PU0lTLAogICBkYXRhID0gbm9fVWtucykKCnN1bW1hcnkoZml0X3N1cmcpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfc3VyZyksIGNvbmZpbnQuZGVmYXVsdChmaXRfc3VyZywgbGV2ZWwgPSAwLjk1KSkpCmBgYAoKIyMgQ2hlbW8KYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoQ0hFTU9fWU4gIT0gIlVrbiIpICU+JSAKICBkcm9wbGV2ZWxzKCkgJT4lIAogIG11dGF0ZShDSEVNT19ZTiA9IGZjdF9yZWNvZGUoQ0hFTU9fWU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgPSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiID0gIlllcyIpKSAlPiUgCiAgbXV0YXRlKENIRU1PX1lOID0gYXMuaW50ZWdlcihDSEVNT19ZTikpICU+JSAKICBtdXRhdGUoQ0hFTU9fWU4gPSBDSEVNT19ZTiAtIDEpCgpmaXRfY2hlbW8gPC0gZ2xtKENIRU1PX1lOIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBub19Va25zKQoKc3VtbWFyeShmaXRfY2hlbW8pCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfY2hlbW8pLCBjb25maW50LmRlZmF1bHQoZml0X2NoZW1vLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBSYWRpYXRpb24KYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoUkFESUFUSU9OX1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkgJT4lCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGZjdF9yZWNvZGUoUkFESUFUSU9OX1lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAiID0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIiA9ICJZZXMiKSklPiUgCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGFzLmludGVnZXIoUkFESUFUSU9OX1lOKSkgJT4lIAogIG11dGF0ZShSQURJQVRJT05fWU4gPSBSQURJQVRJT05fWU4gLSAxKQoKCmZpdF9yYWRzIDwtIGdsbShSQURJQVRJT05fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfcmFkcykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9yYWRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9yYWRzLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBJbW11bm90aGVyYXB5CmBgYHtyfQpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKElNTVVOT19ZTiAhPSAiVWtuIikgJT4lCiAgZHJvcGxldmVscygpICU+JQogIG11dGF0ZShJTU1VTk9fWU4gPSBmY3RfcmVjb2RlKElNTVVOT19ZTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIiA9ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIgPSAiWWVzIikpJT4lIAogIG11dGF0ZShJTU1VTk9fWU4gPSBhcy5pbnRlZ2VyKElNTVVOT19ZTikpICU+JSAKICBtdXRhdGUoSU1NVU5PX1lOID0gSU1NVU5PX1lOIC0gMSkKCgpmaXRfaW1tdW5vIDwtIGdsbShJTU1VTk9fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfaW1tdW5vKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X2ltbXVubyksIGNvbmZpbnQuZGVmYXVsdChmaXRfaW1tdW5vLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBBbnkgVHJlYXRtZW50CmBgYHtyfQpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKFR4X1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkKCgpmaXRfdHggPC0gZ2xtKFR4X1lOIH4gRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArCiAgICAgICAgICAgICAgICAgQUdFX0YgKyBTRVhfRiArIFJBQ0VfRiArIEhJU1BBTklDICsgSU5TVVJBTkNFX0YgKyBJTkNPTUVfRiArIAogICAgICAgICAgICAgICAgIEVEVUNBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMgKyBTSVRFX1RFWFQgKyBHUkFERV9GLAogICBkYXRhID0gbm9fVWtucykKCgpzdW1tYXJ5KGZpdF90eCkKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9yYWRzKSwgY29uZmludC5kZWZhdWx0KGZpdF90eCwgbGV2ZWwgPSAwLjk1KSkpCmBgYAoKIyMgTWV0YXN0YXNpcyBhdCBUaW1lIG9mIERpYWdub3NpcwpgYGB7cn0KCmZpdF9tZXRzIDwtIGdsbShtZXRzX2F0X2R4X0YgfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IGRhdGEpCgpzdW1tYXJ5KGZpdF9tZXRzKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X21ldHMpLCBjb25maW50LmRlZmF1bHQoZml0X21ldHMsIGxldmVsID0gMC45NSkpKQpgYGA=